Azure devops - серверные git-хуки

Как мы можем реализовать перехватчики на стороне сервера или подобное решение, чтобы ограничить git push в git server?

Например, мы хотим отключить отправку коммитов, содержащих файлы *.class.

5 ответов

Я не думаю, что Azure DevOps использует хуки.

Вы можете использовать Политики филиала, чтобы использовать внешнюю службу проверки (насколько я понимаю, для этого используются веб-хуки).

Дополнительно: статус этого пользовательского голосового запроса указывает на то, что выше приведен официальный ответ.

Но, возможно, простой случай будет .gitignore а кодовые отзывы?

Я использую вариант сборки вместе с политиками в Azure DevOps. Это моеazure-pipelines.yml файл:

---
trigger:
  branches:
    exclude:
      - '*'

pool:
  vmImage: 'ubuntu-latest'

steps:
  - script: sudo apt-get install python3-pip
    displayName: 'Install Python PIP'

  - script: sudo apt-get install python3-setuptools
    condition: succeeded()
    displayName: Install Python SetupTools

  - script: sudo pip3 install -r requirements.txt
    condition: succeeded()
    displayName: Install Python PIP Packages

  - task: PythonScript@0
    inputs:
      scriptSource: filePath
      scriptPath: hooks/lint_checker.py
      pythonInterpreter: python3
    condition: succeeded()
    displayName: Lint Checker

Используйте политики веток и установите слияние только с PR, после этого прямая отправка в ветку будет отключена, вы можете пропустить эти политики для определенных пользователей (пользователей сборки или администраторов) h ttps:https://stackru.com/images/a64af3f66cb7253d03708816d01b8359f6e2f1cc.png

Я использую это решение, которое работает правильно и автоматически для всех пользователей.

Сочетание местныхgit hooksиPre-Build eventsвcsprojкоторый проверяет, есть лиpre-commit hookв.git\hooksа если нет, скопируйте его из папки хуков, которая находится в репозитории.

Выполнение:

В моем репо есть папка с крючками, содержащая 2 файла:

  1. setup-hooks.bat
  2. предварительная фиксация

настройки-крючки:

      @echo off

echo Current location is: %cd%

:: Check if the .git/hooks directory exists
if not exist .git\hooks mkdir .git\hooks

:: Copy your hook scripts to the .git/hooks directory
copy hooks\pre-commit .git\hooks\pre-commit

echo Git hooks have been set up.

В событии перед сборкой я вызвал setup-hooks.bat:

Этого можно добиться с помощью политики ветвления с фильтром пути. Вы можете добавить конвейер сборки с помощью PowerShell, который возвращает ошибочный код выхода.

Другие вопросы по тегам