Выполнение команд Git в скрипте

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

В некоторых рабочих процессах для выполнения команд Git требуется конвейер сборки. Например, после завершения сборки CI на ветви функций команда может захотеть объединить эту ветку с основной.

Git предоставляется в размещенных агентах Майкрософт и локальных агентах.

Включение сценариев для выполнения команд Git

Примечание.

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

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Предоставление разрешений на управление версиями для службы сборок

  1. Перейдите на страницу параметров проекта для вашей организации в организации Параметры> General>Projects.

    Выберите параметры организации.

  2. Выберите проект, который требуется изменить.

    Выберите проект.

  3. В Параметры Project выберите репозитории. Выберите репозиторий, в который нужно запустить команды Git.

  4. Выберите "Безопасность", чтобы изменить безопасность репозитория.

    Выберите

  5. Найдите службу сборки коллекции проектов. Выберите удостоверение {{имя проекта}} Служба сборки ({ваша организация}) (а не учетные записи службы сборки коллекции проектов ({ваша организация})). По умолчанию это удостоверение может считывать из репозитория, но не может отправлять в него какие-либо изменения. Предоставьте разрешения, необходимые для команд Git, которые вы хотите запустить. Как правило, вы хотите предоставить следующее:

    • Создать ветвь: Разрешить
    • Участие: разрешить
    • Чтение: разрешить
    • Создание тега: разрешить

Перейдите на вкладку "Панель управления версиями"

  • Azure Repos: https://dev.azure.com/{your-organization}/{your-project}/_admin/_versioncontrol

  • Локальная среда: https://{your-server}:8080/tfs/DefaultCollection/{your-project}/_admin/_versioncontrol

управление проектом

Если вы видите эту страницу, выберите репозиторий и выберите ссылку:

панель управления сверху в проект

Вкладка управления версиями проекта панели управления панелью управления

На вкладке "Управление версиями" выберите репозиторий, в котором требуется выполнить команды Git, а затем выберите службу сборки коллекции проектов. По умолчанию это удостоверение может считывать из репозитория, но не может отправлять в него какие-либо изменения.

разрешения

Предоставьте разрешения, необходимые для команд Git, которые вы хотите запустить. Как правило, вы хотите предоставить следующее:

  • Создать ветвь: Разрешить
  • Участие: разрешить
  • Чтение: разрешить
  • Создание тега: разрешить

Когда вы закончите предоставление разрешений, обязательно нажмите кнопку "Сохранить изменения".

Разрешить скриптам доступ к системным маркерам

Добавьте раздел с заданным checkoutpersistCredentials значением true.

steps:
- checkout: self
  persistCredentials: true

Дополнительные сведения.checkout

На вкладке "Параметры" выберите "Разрешить скриптам доступ к токену OAuth".

Обязательно очистите локальный репозиторий

Некоторые типы изменений в локальном репозитории не удаляются автоматически конвейером сборки. Поэтому обязательно выполните следующее:

  • Удалите создаваемые локальные ветви.
  • Отмена изменений конфигурации Git.

При возникновении проблем с использованием локального агента убедитесь, что репозиторий чист:

Убедитесь, что checkout задано clean значение true.

steps:
- checkout: self
  clean: true

Примеры

Вывод списка файлов в репозитории

На вкладке сборки добавьте следующую задачу:

Задача Аргументы

Программа: командная строка
Вывод списка файлов в репозитории Git.
Инструмент: git

Аргументы: ls-files.

Слияние ветвь компонента с основным

Вы хотите, чтобы сборка CI объединилась с основной, если сборка выполнена успешно.

На вкладке "Триггеры" выберите непрерывную интеграцию (CI) и включите ветви, которые требуется создать.

Создайте merge.bat в корне репозитория:

@echo off
ECHO SOURCE BRANCH IS %BUILD_SOURCEBRANCH%
IF %BUILD_SOURCEBRANCH% == refs/heads/main (
   ECHO Building main branch so no merge is needed.
   EXIT
)
SET sourceBranch=origin/%BUILD_SOURCEBRANCH:refs/heads/=%
ECHO GIT CHECKOUT MAIN
git checkout main
ECHO GIT STATUS
git status
ECHO GIT MERGE
git merge %sourceBranch% -m "Merge to main"
ECHO GIT STATUS
git status
ECHO GIT PUSH
git push origin
ECHO GIT STATUS
git status

На вкладке сборки добавьте эту задачу в качестве последней задачи:

Задача Аргументы

Служебная программа: пакетный скрипт
Запустите merge.bat.
Путь: merge.bat.

Вопросы и ответы

Можно ли запускать команды Git, если удаленный репозиторий находится в GitHub или другой службе Git, например Bitbucket Cloud?

Да

Какие задачи можно использовать для выполнения команд Git?

пакетный скрипт;

Командная строка

PowerShell

скрипт оболочки.

Разделы справки избежать активации сборки CI при отправке скрипта?

Добавьте ***NO_CI*** в сообщение фиксации. Ниже приведены некоторые примеры.

  • git commit -m "This is a commit message ***NO_CI***"
  • git merge origin/features/hello-world -m "Merge to main ***NO_CI***"

Добавьте [skip ci] в сообщение или описание фиксации. Ниже приведены некоторые примеры.

  • git commit -m "This is a commit message [skip ci]"
  • git merge origin/features/hello-world -m "Merge to main [skip ci]"

Вы также можете использовать любой из этих вариантов для фиксаций в Azure Repos Git, Bitbucket Cloud, GitHub и GitHub Enterprise Server.

  • [skip ci] или [ci skip]
  • skip-checks: true или skip-checks:true
  • [skip azurepipelines] или [azurepipelines skip]
  • [skip azpipelines] или [azpipelines skip]
  • [skip azp] или [azp skip]
  • ***NO_CI***

Нужен ли мне агент?

Для выполнения сборки или выпуска необходим по меньшей мере один агент.

У меня возникли проблемы. Как их устранить?

См. раздел Устранение неполадок со сборками и выпусками.

Мне не удается выбрать пул агентов по умолчанию, и я не могу поставить сборку или выпуск в очередь. Как это устранить?

См. Пулы агентов.

Задача отправки NuGet завершается со следующей ошибкой: "Ошибка: не удается получить сертификат локального издателя". Как это исправить?

Это можно исправить, добавив доверенный корневой сертификат. Можно либо добавить переменную среды NODE_EXTRA_CA_CERTS=file в агент сборки либо добавить переменную задачи NODE.EXTRA.CA.CERTS=file в конвейер. Дополнительные сведения об этой переменной см. в документации по Node.js. Инструкции по настройке переменной в конвейере см. в разделе Настройка переменных в конвейере.

Я использую Team Foundation Server локально и не вижу некоторые из этих функций. Почему?

Некоторые из этих функций доступны только в Azure Pipelines и пока недоступны в локальной среде. Некоторые функции доступны в локальной среде, если вы выполнили обновление до последней версии Team Foundation Server.