Функция Поддержка нескольких репозиториев для конвейеров YAML скоро будет доступна для службы azure devops. Эта функция будет поддерживать запуск конвейеров на основе изменений, сделанных в одном из нескольких хранилищ. Пожалуйста, отметьте Azure DevOps Feature Timeline или здесь . Ожидается, что эта функция будет развернута в первом квартале 2020 года для сервиса azure devops.
В настоящее время вы можете выполнить приведенный ниже обходной путь, чтобы достичь выше, используя Завершение сборки (конвейер будет запущен при завершении другой сборки).
1, Настройка запускающий конвейер
Создайте пустой конвейер classi c для репозитория application_code в качестве запускающего конвейера, который всегда будет успешным и ничего не будет делать.
И отметьте Включить непрерывную интеграцию в Триггеры вкладка и настройка Фильтры Bracnh
2, настройте запущенный конвейер
В репозитории pipe_code, используя от Checkout
до Проверьте несколько репозиториев в вашем конвейере . Вы можете специально проверить исходный код репозитория application_code для сборки. Ниже приведен пример:
steps:
- checkout: git://MyProject/application_code_repo@refs/heads/master # Azure Repos Git repository in the same organization
- task: TaskName
...
Затем в конвейере yaml страница редактирования , нажмите 3dots в правом верхнем углу и нажмите Триггеры . Затем нажмите + Добавить рядом с Завершение сборки и выберите вышеуказанный запускающий конвейер, созданный на шаге 1, как запускающую сборку .
После выполнения вышеупомянутых двух шагов, когда будут внесены изменения в репозиторий application_code, запускающий конвейер будет выполнен и завершен с успехом. Затем запущенный конвейер будет запущен для запуска реального задания сборки.
Обновление:
Показать Azure DevOps Построить состояние конвейера в Bitbucket.
Вы можете добавить задачу скрипта python в конце конвейера yaml, чтобы обновить состояние сборки Bitbucket. Вам нужно установить condtion: always()
, чтобы всегда запускать эту задачу, даже если другие задачи не выполнялись.
Вы можете получить статус сборки с переменной env Agent.JobStatus
. Пример ниже:
Для получения дополнительной информации, пожалуйста, обратитесь к документу Интегрируйте свою систему сборки с Bitbucket Cloud , а также этот поток .
- task: PythonScript@0
condition: always()
inputs:
scriptSource: inline
script: |
import os
import requests
# Use environment variables that your CI server provides to the key, name,
# and url parameters, as well as commit hash. (The values below are used by
# Jenkins.)
data = {
'key': os.getenv('BUILD_ID'),
'state': os.getenv('Agent.JobStatus'),
'name': os.getenv('JOB_NAME'),
'url': os.getenv('BUILD_URL'),
'description': 'The build passed.'
}
# Construct the URL with the API endpoint where the commit status should be
# posted (provide the appropriate owner and slug for your repo).
api_url = ('https://api.bitbucket.org/2.0/repositories/'
'%(owner)s/%(repo_slug)s/commit/%(revision)s/statuses/build'
% {'owner': 'emmap1',
'repo_slug': 'MyRepo',
'revision': os.getenv('GIT_COMMIT')})
# Post the status to Bitbucket. (Include valid credentials here for basic auth.
# You could also use team name and API key.)
requests.post(api_url, auth=('auth_user', 'auth_password'), json=data)