Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
В этой статье рассматриваются ресурсы для конвейеров YAML. Ресурс — это то, что конвейер использует, который существует вне этого конвейера. Ресурсы в конвейерах YAML могут быть другими конвейерами, сборками, контейнерами, пакетами, репозиториями или веб-перехватчиками.
После определения ресурса его можно использовать в любом месте конвейера. Дополнительные сведения и примеры см. в определениях ресурсов.
resources:
pipelines:
- pipeline: resources1
source: otherPipeline
steps:
- download: resources1
artifact: artifact1.txt
Состояние ресурса можно использовать для автоматического активации конвейеров, задав trigger свойство в определении ресурса. Затем конвейер resources.triggeringAlias и resources.triggeringCategory переменные задаются в качестве имени ресурса и категории. Эти переменные пусты, если Build.Reason переменная не задана ResourceTrigger.
Ресурсы позволяют полностью отслеживать использование конвейера служб, включая версию, артефакты, связанные фиксации и рабочие элементы. Если вы подписаны на активацию событий в ресурсах, вы можете полностью автоматизировать рабочие процессы DevOps.
Примечание.
В этой статье рассматриваются ресурсы в конвейерах YAML. Сведения о ресурсах в классических конвейерах см. в разделе "Сведения о ресурсах для Azure Pipelines".
Авторизация ресурсов
Ресурсы должны быть авторизованы для использования в конвейерах. Владельцы ресурсов управляют пользователями и конвейерами, которые могут получить доступ к своим ресурсам. Существует несколько способов авторизации конвейера YAML для использования ресурсов.
Используйте параметры администрирования ресурса, чтобы предоставить разрешения на доступ ко всем конвейерам. Например, вы можете управлять защищенными файлами и группами переменных на страницебиблиотеки конвейеров, а также пулы > и подключения служб в параметрах> проектаконвейеров. Эта авторизация удобна для ресурсов, которые не нужно ограничивать, например тестовые ресурсы.
Убедитесь, что у вас есть по крайней мере роль пользователя в ролях безопасности пула агентов для проекта. Создаваемые конвейеры YAML автоматически авторизованы для использования ресурсов, где у вас есть роль пользователя .
Если вы добавляете определение ресурса в конвейер YAML, но сборка завершается ошибкой, например
Could not find a <resource> with name <resource-name>. The <resource> does not exist or has not been authorized for use, убедитесь, что у вас есть по крайней мере роль пользователя в ресурсе. Затем можно выбрать параметр для авторизации ресурсов в неудачной сборке. После того как ресурс будет авторизован, вы можете начать новую сборку.
Проверки утверждения ресурсов
Для управления использованием ресурсов вручную можно использовать проверки утверждения и шаблоны. С помощью обязательной проверки утверждения шаблона можно требовать любой конвейер, использующий определенный ресурс или среду для расширения от определенного шаблона YAML.
Настройка требуемого утверждения шаблона повышает безопасность, гарантируя, что ресурс используется только в определенных условиях. Дополнительные сведения см. в разделе "Использование шаблонов для безопасности".
Средство выбора версий вручную
Azure Pipelines оценивает версии по умолчанию для ресурсов на основе их определений ресурсов. Для запланированных запусков или ручных запусков, если вы не выбрали выполнение вручную, Azure Pipelines считает, что выполняется только успешно завершенная непрерывная интеграция (CI) для оценки версий ресурсов по умолчанию.
Средство выбора версий ресурсов вручную можно использовать для выбора различных версий ресурсов при запуске конвейера непрерывного развертывания YAML (CD). Средство выбора версий ресурса поддерживается для конвейера, сборки, репозитория, контейнера и пакетных ресурсов.
Для pipeline ресурсов средство выбора версий вручную позволяет просматривать все доступные запуски во всех ветвях, выполнять поиск по номерам конвейера или ветви, а также выбирать выполнение, которое выполнено успешно, сбой или выполняется.
Вам не нужно ожидать завершения выполнения CI или повторного запуска из-за несвязанного сбоя перед запуском конвейера CD. Вы можете выбрать любой запуск, который вы знаете, создали необходимые артефакты.
Чтобы использовать средство выбора версий ресурсов, выберите "Ресурсы " в области "Запуск конвейера ", выберите ресурс и выберите определенную версию из списка доступных версий. Для ресурсов, где вы не можете получить доступные версии, такие как пакеты GitHub, можно ввести нужную версию в текстовом поле.
Определения ресурсов
Ресурсы конвейера YAML могут быть следующими:
В следующих разделах приведены определения и примеры категорий ресурсов конвейера YAML. Полные сведения о схеме см. в определении ресурсов в справочнике по схеме YAML для Azure Pipelines.
Ресурс конвейеров
Ресурсы CI pipeline можно использовать в качестве триггеров для рабочих процессов CD. Вы также можете ссылаться на pipeline ресурсы из конвейера, чтобы скачать артефакты или использовать переменные ресурсов конвейера. Только Azure Pipelines могут использовать ресурс pipelines.
В определении pipelines ресурса:
-
pipeline— это уникальное имя, используемое для ссылки на ресурсы конвейера. -
source— это имя конвейера, создающего артефакты конвейера.
Полные сведения о схеме см. в определении resources.pipelines.pipeline .
Примеры определений ресурсов конвейера
В следующем примере определения ресурсов используются артефакты из конвейера в том же проекте Azure DevOps.
resources:
pipelines:
- pipeline: SmartHotel-resource # identifier to use in pipeline resource variables
source: SmartHotel-CI # name of the pipeline that produces the artifacts
Чтобы указать конвейер из другого проекта, добавьте project имя в определение ресурса. В следующем примере также используется branch для разрешения версии по умолчанию при активации конвейера вручную или по расписанию. Входные данные для ветки не могут содержать подстановочные символы.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
branch: releases/M142
Оценка версий ресурсов
Azure Pipelines оценивает версии по умолчанию для ресурсов на основе их определений ресурсов. Версии артефактов ресурсов конвейера по умолчанию зависят от того, выполняется ли конвейер вручную или по расписанию, или триггеры в зависимости от результата выполнения ресурса.
Для выполнения вручную или запланированного конвейера значения versionbranchtags значений и свойств в pipeline определении ресурса определяют версии артефактов. Входные branch данные не могут содержать подстановочные знаки, а tags свойства используют AND оператор.
Для запланированных запусков или вручную, если вы не используете средство выбора версий, Azure Pipelines рассматривает только успешно завершенную непрерывную интеграцию (CI) при оценке версий ресурсов по умолчанию. Для выполнения вручную можно переопределить определенные версии с помощью средства выбора версий вручную.
В следующей таблице перечислены pipeline свойства определения ресурсов и указанные им версии артефактов.
| Указанное свойство | Версия артефакта |
|---|---|
version |
Сборка с указанным номером выполнения |
branch |
Последняя сборка, запущенная в указанной ветви |
tags |
Последняя сборка со всеми указанными тегами |
branch и tags |
Последнее выполнение сборки в указанной ветви с указанными тегами |
version и branch |
Сборка с указанным номером выполнения и указанной ветвью |
| нет | Последняя сборка во всех ветвях |
В следующем pipeline определении ресурсов используются branch свойства и tags свойства для оценки версии по умолчанию при планировании или запуске конвейера вручную. Версия myCIAlias артефактов — это последняя сборка main в ветви с Production тегами и PreProduction тегами.
resources:
pipelines:
- pipeline: myCIAlias
project: Fabrikam
source: Fabrikam-CI
branch: main
tags:
- Production
- PreProduction
Триггеры ресурсов конвейера
Для выполнения конвейера, который активируется в результате выполнения ресурса, trigger параметры свойств в определении ресурса определяют версии артефактов ресурсов по умолчанию. Чтобы использовать pipeline ресурс в качестве триггера для запуска текущего конвейера, необходимо задать trigger свойство. Если вы не включаете trigger свойство, запуски ресурсов не активируют текущие запуски конвейера.
Если конвейер активируется на trigger основе значения в pipeline определении ресурса, значения общего определения versionbranchресурса и tags свойства игнорируются. Свойства trigger определяют версии артефактов.
Внимание
При определении триггера ресурса конвейера:
-
pipelineЕсли ресурс находится из того же репозитория, что и текущий конвейер, илиselfтриггер находится в той же ветви и фиксирует событие триггера. -
pipelineЕсли ресурс отличается от текущегоpipelineконвейера, активируется в ветви по умолчанию репозитория ресурсов.
В следующей таблице описывается, как trigger свойства влияют на поведение триггера.
| Свойство Триггера | Поведение триггера |
|---|---|
true |
Активация возникает при успешном завершении выполнения конвейера ресурсов. |
branches |
Активация возникает, когда конвейер ресурсов успешно завершает выполнение в одной из include ветвей. |
tags |
Активация возникает, когда конвейер ресурсов успешно завершает выполнение, помеченное всеми указанными тегами. |
stages |
Активация возникает, когда конвейер ресурсов успешно запускает указанный stages. |
branches, tags и stages |
Активация возникает, когда успешный запуск конвейера ресурсов удовлетворяет всем условиям ветви, тега и этапа. |
В следующем примере показано определение ресурсов конвейеров с простым trigger.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
trigger: true
В следующем примере показан ресурс trigger конвейера с условиями для ветки.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
trigger:
branches:
- releases/*
- resources.triggeringAlias
В следующем примере используются stages фильтры для оценки условий триггера для конвейеров CD. Триггер stages использует AND оператор. Конвейер CD активируется после успешного завершения всех перечисленных этапов.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Fabrikam-CI
trigger:
stages:
- PreProduction
- Production
В следующем примере используются tags фильтры для оценки версий по умолчанию и триггера. Теги trigger используют AND оператор. Набор tags определений ресурсов отличается от тегов, заданных в pipeline ветвях в репозитории Git.
resources:
pipelines:
- pipeline: MyCIAlias
project: Fabrikam
source: Fabrikam-CI
tags:
- Production
trigger:
tags:
- Production
- Signed
Следующий конвейер выполняется каждый раз, когда задействован конвейер ресурсов:
- Выполняется в одной из
releasesветвей или вmainветви. - Помечен как и
VerifiedSigned. - Завершает и
ProductionPreProductionэтапы.
resources:
pipelines:
- pipeline: SmartHotel
project: otherDevOpsProject
source: SmartHotel-CI
trigger:
branches:
include:
- releases/*
- main
exclude:
- topic/*
tags:
- Verified
- Signed
stages:
- Production
- PreProduction
Скачивание артефакта конвейера
Шаг download в конвейере YAML можно использовать для скачивания артефактов, связанных с текущим запуском или другим pipeline ресурсом.
Артефакты загружают автоматически только в заданиях развертывания. Все артефакты из текущего конвейера и все его pipeline ресурсы автоматически загружаются и доступны в начале каждого задания развертывания. Это поведение можно переопределить, задав downloadnoneили указав другой pipeline идентификатор ресурса.
В обычном задании сборки артефакты не загружают автоматически. Используйте download явно при необходимости.
На шаге необязательное downloadartifact свойство указывает имена артефактов. Если это не указано, скачиваются все доступные артефакты.
Необязательное patterns свойство определяет шаблоны, представляющие файлы для скачивания. Полные сведения о схеме см. в определении steps.download .
- job: deploy_windows_x86_agent
steps:
- download: SmartHotel
artifact: WebTier1
patterns: '**/*.zip'
Артефакты из скачиваемого pipeline ресурса в $(PIPELINE. WORKSPACE)/<pipeline-identifier>/<artifact-identifier> folder. Дополнительные сведения см. в статье "Публикация и скачивание артефактов конвейера". Альтернативный способ скачивания артефактов конвейера см. в разделе "Скачать артефакты".
Переменные ресурса конвейера
Метаданные для ресурса конвейера доступны всем заданиям в каждом запуске в качестве предопределенных переменных. Эти переменные доступны вашему конвейеру только во время выполнения, поэтому их нельзя использовать в шаблонных выражениях, которые вычисляются во время компиляции конвейера.
Дополнительные сведения см. в разделе "Определение переменных " и метаданных ресурса конвейера в качестве предопределенных переменных.
В следующем примере возвращаются предопределенные значения переменной myresourcevars для ресурса конвейера.
resources:
pipelines:
- pipeline: myresourcevars
source: mypipeline
trigger: true
steps:
- script: |
echo $(resources.pipeline.myresourcevars.pipelineID)
echo $(resources.pipeline.myresourcevars.runName)
echo $(resources.pipeline.myresourcevars.runID)
echo $(resources.pipeline.myresourcevars.runURI)
echo $(resources.pipeline.myresourcevars.sourceBranch)
echo $(resources.pipeline.myresourcevars.sourceCommit)
echo $(resources.pipeline.myresourcevars.sourceProvider)
echo $(resources.pipeline.myresourcevars.requestedFor)
echo $(resources.pipeline.myresourcevars.requestedForID)
Создание ресурса
Если у вас есть система сборки CI, которая создает артефакты, можно использовать артефакты с builds ресурсами.
Категория builds расширяема.
build Ресурс может быть из любой внешней системы CI, например Jenkins, TeamCity или CircleCI. Можно использовать builds для записи расширения для использования артефактов из службы сборки или создания нового типа службы.
build В определении version по умолчанию используется последняя успешная сборка. Если требуется, необходимо явно задать trigger . Полные сведения о схеме см. в определении resources.builds.build .
В следующем примере Jenkins — это тип ресурса.
resources:
builds:
- build: Spaceworkz
type: Jenkins
connection: MyJenkinsServer
source: SpaceworkzProj # name of the Jenkins source project
trigger: true
Внимание
Триггеры поддерживаются только для управляемого Jenkins, где Azure DevOps имеет возможность взаимодействовать с сервером Jenkins.
Задача downloadBuild
build Артефакты ресурсов не загружаются автоматически в задания и задания развертывания. Чтобы использовать артефакты из ресурса build в ваших заданиях, необходимо явно добавить задачу downloadBuild. Вы можете настроить поведение загрузки для каждого развертывания или задания.
Задача downloadBuild автоматически разрешает соответствующую задачу скачивания для типа ресурса, определяемого build средой выполнения. Артефакты из скачиваемого build ресурса в $(PIPELINE. WORKSPACE)/<build-identifier>/ folder.
В определении вы указываете downloadBuild ресурс для загрузки артефактов. Свойство artifact, которое является необязательным, определяет артефакты для скачивания. Если это не указано, все артефакты, связанные с скачиванием ресурсов.
Необязательное patterns свойство определяет минималистичный путь или список минималистичных путей для скачивания. Если пусто, все артефакты скачиваются. В следующем примере скачиваются только файлы *.zip .
- job: deploy_windows_x86_agent
steps:
- downloadBuild: Spaceworkz
patterns: '**/*.zip'
Полные сведения о схеме см. в определении steps.downloadBuild .
Ресурс репозиториев
Используйте ключевое слово, чтобы сообщить системе repository о внешних репозиториях, если:
- Конвейер содержит шаблоны в другом репозитории.
- Вы хотите использовать несколько репозиторий с репозиторием, для которого требуется подключение к службе.
Например:
resources:
repositories:
- repository: common
type: github
name: Contoso/CommonTools
endpoint: MyContosoServiceConnection
Полные сведения о схеме см. в определении resources.repositories.repository .
Типы ресурсов репозитория
Azure Pipelines поддерживает gitтипы, githubа githubenterpriseтакже bitbucket типы репозиториев.
- Тип
gitотносится к репозиториям Azure Repos Git. - Репозитории GitHub Enterprise требуют подключения службы GitHub Enterprise для авторизации.
- Bitbucket Cloud repos требует подключения к облачной службе Bitbucket для авторизации.
В следующей таблице описаны repository типы ресурсов:
| Тип | Значение имени | Пример |
|---|---|---|
git |
Другой репозиторий в одном проекте или одной организации. | Тот же проект: name: otherRepoДругой проект в той же организации: name: otherProject/otherRepo. |
github |
Полное имя репозитория GitHub, включая пользователя или организацию. | name: myOrganization/otherRepo |
githubenterprise |
Полное имя репозитория GitHub Enterprise, включая пользователя или организацию. | name: myEnterpriseOrg/otherRepo |
bitbucket |
Полное имя репозитория Bitbucket Cloud, включая пользователя или организацию. | name: MyBitbucketOrg/otherRepo |
Переменные ресурсов репозитория
Метаданные ресурса репозитория доступны всем заданиям во всех запусках в качестве переменных среды выполнения. Идентификатор <alias>repository из repository определения ресурса.
resources.repositories.<alias>.name
resources.repositories.<alias>.ref
resources.repositories.<alias>.type
resources.repositories.<alias>.id
resources.repositories.<alias>.url
В следующем repository определении ресурса есть псевдоним common, поэтому вы обращаетесь к переменным ресурса репозитория с помощью resources.repositories.common.*.
resources:
repositories:
- repository: common
type: git
ref: main
name: repo
variables:
ref: $[ resources.repositories.common.ref ]
name: $[ resources.repositories.common.name ]
id: $[ resources.repositories.common.id ]
type: $[ resources.repositories.common.type ]
url: $[ resources.repositories.common.url ]
steps:
- bash: |
echo "name = $(name)"
echo "ref = $(ref)"
echo "id = $(id)"
echo "type = $(type)"
echo "url = $(url)"
Метаданные ресурса репозитория доступны всем заданиям во всех запусках в качестве переменных среды выполнения. Идентификатор <alias>repository из repository определения ресурса.
resources.repositories.<alias>.name
resources.repositories.<alias>.ref
resources.repositories.<alias>.type
resources.repositories.<alias>.id
resources.repositories.<alias>.url
resources.repositories.<alias>.version
В следующем примере имеется псевдоним common, поэтому вы обращаетесь к переменным ресурса репозитория с помощью resources.repositories.common.*.
resources:
repositories:
- repository: common
type: git
ref: main
name: Repo
variables:
ref: $[ resources.repositories.common.ref ]
name: $[ resources.repositories.common.name ]
id: $[ resources.repositories.common.id ]
type: $[ resources.repositories.common.type ]
url: $[ resources.repositories.common.url ]
version: $[ resources.repositories.common.version ]
steps:
- bash: |
echo "name = $(name)"
echo "ref = $(ref)"
echo "id = $(id)"
echo "type = $(type)"
echo "url = $(url)"
echo "version = $(version)"
Ключевое слово "checkout" для репозиториев
Репозитории из ресурса repository не синхронизируются автоматически в ваших задачах. Ключевое checkout слово можно использовать для получения репозитория, определенного в ресурсе repository . Для получения дополнительной информации см. Обзор нескольких репозиториев в вашем конвейере. Полные сведения о схеме см. в определении steps.checkout .
Ресурс контейнеров
Ресурсы можно использовать для использования containers образов контейнеров в конвейерах CI/CD.
container Ресурс может быть общедоступным или частным реестром Docker или экземпляром реестра контейнеров Azure.
Вы можете использовать универсальный образ ресурса контейнера в рамках заданий или использовать его в заданиях контейнеров. Если конвейеру требуется поддержка одной или нескольких служб, необходимо также создать и подключиться к контейнерам служб. Тома можно использовать для совместного использования данных между службами.
Если вам нужно использовать образы из реестра Docker, можно определить универсальный ресурс контейнера без использования ключевого type слова. Например:
resources:
containers:
- container: smartHotel
endpoint: myDockerRegistry
image: smartHotelApp
Полные сведения о схеме см. в определении resources.container.container .
Примечание.
Синтаксис enabled: 'true' для включения триггеров контейнера для тегов изображений отличается от синтаксиса для других триггеров ресурсов. Не забудьте использовать правильный синтаксис для определенных ресурсов.
тип ресурса Реестр контейнеров Azure
Чтобы воспользоваться образами из Реестра контейнеров Azure, используйте тип ресурса контейнера первого класса acr. Этот тип ресурса можно использовать в заданиях и включить автоматические триггеры конвейера.
Для использования триггеров автоматического конвейера требуется разрешение участника реестра контейнеров Azure или владельца . Для получения дополнительной информации см. раздел Роли и разрешения в Реестре контейнеров Azure.
Чтобы использовать ресурс типа acr, необходимо указать значения azureSubscription, resourceGroup и repository для реестра контейнеров Azure. Например:
resources:
containers:
- container: petStore
type: acr
azureSubscription: ContosoConnection
resourceGroup: ContosoGroup
registry: petStoreRegistry
repository: myPets
trigger:
tags:
include:
- production*
Примечание.
Оценка триггера выполняется только в ветви по умолчанию. Убедитесь, что задать правильную основную ветвь или объединить файл YAML в текущую основную ветвь. Дополнительные сведения об изменении ветви конвейера по умолчанию см. в разделе "Ветвь конвейера по умолчанию".
Переменные ресурсов контейнера
После определения контейнера в качестве ресурса метаданные образа контейнера передаются в конвейер в виде переменных. Информация, такая как образ, реестр и детали подключения, доступна во всех заданиях, связанных с задачами развертывания контейнеров.
Переменные ресурсов контейнеров работают с Docker и Azure Container Registry. Нельзя использовать переменные ресурсов контейнера для контейнеров локальных образов. Переменная location применяется только к типу acr ресурса контейнера.
В следующем примере имеется подключение службы Azure Resource Manager с именем arm-connection. Дополнительные сведения см. в реестрах контейнеров Azure, репозиториях и образах.
resources:
containers:
- container: mycontainer
type: acr
azureSubscription: arm-connection
resourceGroup: rg-storage-eastus
registry: mycontainerregistry
repository: hello-world
trigger:
tags:
- latest
steps:
- script: echo |
echo $(resources.container.mycontainer.type)
echo $(resources.container.mycontainer.registry)
echo $(resources.container.mycontainer.repository)
echo $(resources.container.mycontainer.tag)
echo $(resources.container.mycontainer.digest)
echo $(resources.container.mycontainer.URI)
echo $(resources.container.mycontainer.location)
Ресурс пакетов
Пакеты NuGet и npm GitHub можно использовать в качестве ресурсов в конвейерах YAML. Чтобы включить автоматические триггеры конвейера при выпуске новой версии пакета, задайте trigger для свойства значение true.
При определении package ресурсов укажите пакет <repository>\<name> в свойстве name и задайте пакет type как NuGet или npm. Чтобы использовать пакеты GitHub, используйте проверку подлинности на основе ПАТ и создайте подключение службы GitHub, использующее PAT.
Полные сведения о схеме см. в определении resources.packages.package .
Пакеты не загружаются автоматически в задания по умолчанию. Чтобы скачать, используйте getPackage.
В следующем примере показано подключение к сервису GitHub с именем pat-contoso, связанное с npm-пакетом GitHub под названием contoso. Дополнительные сведения см. в статье о пакетах GitHub.
resources:
packages:
- package: contoso
type: npm
connection: pat-contoso
name: myname/contoso
version: 7.130.88
trigger: true
steps:
- getPackage: contoso
Ресурс веб-перехватчиков
Примечание.
Веб-перехватчики, выпущенные в Azure DevOps Server 2020.1.
Вы можете использовать конвейер Azure Pipelines, контейнер, сборку и пакеты ресурсов для использования артефактов и автоматизации триггеров, но их нельзя использовать для базирования развертываний во внешних событиях или службах. Веб-перехватчики автоматизируют рабочий процесс на основе внешних событий веб-перехватчика, которые не поддерживают ресурсы Azure Pipelines первого класса. Вы можете подписаться на внешние события через веб-перехватчики и использовать события для активации конвейеров.
Ресурс webhooks в конвейерах YAML позволяет интегрировать конвейеры с внешними службами, такими как GitHub, GitHub Enterprise, Nexus и Artifactory для автоматизации рабочих процессов. Для локальных служб, в которых Azure DevOps не имеет видимости процесса, вы можете настроить веб-перехватчики в службе для автоматического активации конвейеров.
Чтобы подписаться на событие веб-перехватчика, необходимо определить webhook ресурс в конвейере и указать входящее подключение службы веб-перехватчика. Полные сведения о схеме см. в определении resources.webhooks.webhook .
Полезные данные JSON можно использовать в качестве переменных в заданиях с помощью формата ${{ parameters.<WebhookAlias>.<JSONPath>}}. Следующий пример определяет и вызывает ресурс веб-перехватчика:
resources:
webhooks:
- webhook: myWebhookResource
connection: myWebHookConnection
steps:
- script: echo ${{ parameters.myWebHookResource.resource.message.title }}
Фильтры в ресурсе веб-перехватчика можно определить на основе полезных данных JSON для настройки триггеров для каждого конвейера. Всякий раз, когда подключение к входящей службе веб-перехватчика получает событие веб-перехватчика, новые триггеры запуска для всех конвейеров, подписанных на это событие веб-перехватчика.
В следующем примере используются фильтры веб-перехватчика.
resources:
webhooks:
- webhook: MyWebhookTrigger
connection: MyWebhookConnection
filters:
- path: repositoryName
value: maven-releases
- path: action
value: CREATED
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Host ${{ parameters.MyWebhookTrigger.repositoryName}}
Write-Host ${{ parameters.MyWebhookTrigger.component.group}}
Конфигурация триггера веб-перехватчика
Чтобы настроить триггер веб-перехватчика, необходимо настроить веб-перехватчик во внешней службе, указав следующие сведения:
-
URL-адрес запроса:
https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-preview - Секрет (необязательно): если необходимо защитить полезные данные JSON, укажите значение секрета.
Вподключениях службы "Параметры проекта Azure DevOps >>Service" создается новое подключение к входящей службе веб-перехватчика. Например, можно определить следующие сведения для типа подключения службы GitHub:
- Имя веб-перехватчика: имя подключения веб-перехватчика, созданное во внешней службе.
- Секрет (необязательно): хэш полезных данных HMAC-SHA1 для проверки входящего запроса. Если при создании веб-перехватчика вы использовали секрет, необходимо указать тот же секрет.
-
Заголовок HTTP (необязательно): заголовок HTTP в запросе, который содержит HMAC-SHA1 хэш-значение полезных данных для проверки запроса. Например, заголовок запроса GitHub имеет значение
X-Hub-Signature.
Чтобы активировать конвейер с помощью веб-перехватчика, выполните POST запрос https://dev.azure.com/<org_name>/_apis/public/distributedtask/webhooks/<webhook_connection_name>?api-version=6.0-preview. Эта конечная точка общедоступна и не требует авторизации. Запрос должен иметь текст, аналогичный следующему примеру:
{
"resource": {
"message": {
"title": "Hello, world!",
"subtitle": "I'm using WebHooks!"
}
}
}
Примечание.
Доступ к данным из текста запроса веб-перехватчика может привести к неправильному YAML. Например, шаг - script: echo ${{ parameters.WebHook.resource.message }} конвейера извлекает все сообщение JSON, которое создает недопустимый YAML. Любой конвейер, активируемый с помощью этого веб-перехватчика, не запускается, так как созданный YAML недопустим.
Возможность трассировки
Azure Pipelines обеспечивает полную трассировку любого ресурса, потребляемого на уровне конвейера или задания на развертывание. Azure Pipelines отображает следующие сведения для каждого запуска конвейера, использующего ресурсы:
- Если ресурс активировал конвейер, то это тот же самый ресурс, который активировал конвейер.
- Версии ресурсов и используемые артефакты.
- Коммиты, связанные с каждым ресурсом.
- Рабочие элементы, связанные с каждым ресурсом.
Связанные сведения о конвейере CD для конвейеров CI
Чтобы обеспечить сквозную трассировку, можно отслеживать, какие конвейеры CD используют определенный конвейер CI через pipelines ресурс. Если другие конвейеры потребляли конвейер CI, вы увидите вкладку "Связанные конвейеры " в представлении "Запуск ". В представлении показаны все запуски конвейера CD YAML, использовавшие ваш конвейер CI и артефакты из него.
Трассируемость среды
После развертывания конвейера в среде вы увидите список ресурсов, которые он использовал, и связанные с ними фиксации и рабочие элементы.
Вопросы и ответы
Когда следует использовать ресурсы пайплайнов, функцию быстрой загрузки или задачу «Скачать артефакты пайплайнов»?
Использование ресурса pipelines — это способ использования артефактов из CI-конвейера и настройки автоматических триггеров. Ресурс позволяет полностью контролировать процесс, предоставляя информацию об используемой версии, артефактах, фиксациях и рабочих элементах. При определении ресурса конвейера связанные артефакты автоматически загружаются в заданиях развертывания.
С помощью download ярлыка можно скачать артефакты в заданиях сборки или переопределить поведение загрузки в заданиях развертывания. Дополнительные сведения см. в определении steps.download .
Задача Download Pipeline Artifacts не обеспечивает возможность трассировки или триггеры, но иногда имеет смысл использовать эту задачу напрямую. Например, у вас может быть задача скрипта, хранящаяся в другом шаблоне и требующая скачивания артефактов из сборки. Или, возможно, вы не захотите добавлять ресурс конвейера в шаблон. Чтобы избежать зависимостей, вы можете использовать задачу "Загрузка артефактов конвейера" для передачи всей информации о сборке в задачу.
Как активировать запуск потока, когда мой образ Docker Hub обновляется?
Триггер ресурса контейнера недоступен для конвейеров Docker Hub для YAML, поэтому необходимо настроить классический конвейер выпуска.
- Создайте новое подключение к службе Docker Hub.
- Создайте классический конвейер выпуска и добавьте артефакт Docker Hub. Задайте подключение службы и выберите пространство имен, репозиторий, версию и псевдоним источника.
- Выберите триггер и переключите триггер непрерывного развертывания, чтобы включить. Каждый push Docker, выполняемый в выбранный репозиторий, создает релиз.
- Создайте новый этап и задание. Добавьте две задачи: вход в Docker и Bash.
- Задача Docker имеет действие
loginи выполняет вход на Docker Hub. - Задача Bash выполняется
docker pull <hub-user>/<repo-name>[:<tag>].
- Задача Docker имеет действие
Как проверить и диагностировать проблемы вебхука?
Создайте подключение к службе.
Укажите подключение к службе и задайте название веб-перехватчика в разделе
webhooks.resources: webhooks: - webhook: MyWebhookTriggerAlias connection: MyServiceConnectionЗапустите свой конвейер. Веб-перехватчик создается в Azure в качестве распределенной задачи для вашей организации.
Выполните API вызов, используя корректный JSON в теле запроса
POSTкhttps://dev.azure.com/<organization>/_apis/public/distributedtask/webhooks/<webhook-name>?api-version=<apiversion>. Если вы получите ответ с кодом состояния 200, это означает, что ваш веб-перехватчик готов к обработке в вашем конвейере.
Если вы получаете ответ на код состояния 500 с ошибкойCannot find webhook for the given webHookId ..., код может находиться в ветви, которая не ветвь по умолчанию. Чтобы устранить эту проблему, выполните следующие действия:
- Выберите "Изменить" на странице конвейера.
- В меню "Дополнительные действия" выберите "Триггеры".
- Выберите вкладку YAML и выберите " Получить источники".
- В разделе "Ветвь по умолчанию для ручных и запланированных сборок", обновите свою функциональную ветвь.
- Нажмите Сохранить и поместить в очередь.
- После успешного выполнения этого конвейера выполните вызов API, передавая допустимый JSON в теле запроса на
POST. Теперь вы должны получить ответ на код состояния 200.
Почему не работал триггер ресурса?
Триггеры ресурсов могут не выполняться, так как:
- Источник предоставленного подключения к службе недопустим.
- Триггер не настроен или в триггере возникают синтаксические ошибки.
- Условия триггера не совпадают с заданными.
Чтобы узнать, почему триггеры конвейера не удалось выполнить, выберите пункт меню "Проблемы триггера " на странице определения конвейера. Проблемы с триггером недоступны для ресурсов репозитория.
На странице проблем триггера сообщения об ошибках и предупреждениях описывают, почему триггер не сработал.