Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
管線觸發器會告訴管線何時執行。 你可以設定觸發器,讓管線根據排程或因應事件(例如建立 Pull Request)而執行。 Azure Pipelines 支援以下類型的觸發器:
- 持續整合觸發程序(CI 觸發程序)會在您將程式碼推送至分支時執行管線。
- 拉取請求觸發器(PR triggers)會在你提出 PR 或將程式碼推送到開放 PR 的來源分支時,執行一條管線。 GitHub 存放庫支援留言觸發條件,當你在開啟的提取要求中加入留言時,就會執行管線。
- 排程觸發器會按照預先定義的排程執行管線作業。
- 管線完成觸發程序會在另一條管線完成時觸發某個管線執行。
本文概述了 YAML 管線 觸發器與 經典建置管線 觸發器。 傳統發行管線 也有與前述清單所述類似的觸發條件。 如需詳細資訊,請參閱 傳統版發行管線觸發程序。
CI 觸發條件
當推送至符合觸發器所定義條件的分支時,CI 觸發器會執行管線。 使用 trigger 關鍵字來設定 CI 觸發器。 例如,若要在推送至 main 分支時執行管線,請指定以下觸發條件。
trigger:
- main
如果你沒有明確設定管線,所有分支預設會啟用 CI 觸發程序,除非已設定 停用隱含的 CI 觸發程序,或 UI 設定會覆寫 YAML 觸發程序。
如果你沒有明確設定管線,所有分支預設會啟用 CI 觸發程序,除非已設定 停用隱含的 CI 觸發程序,或 UI 設定會覆寫 YAML 觸發程序。
注意
Disable implied CI trigger 僅在 2022.2 Azure DevOps Server 及以上版本中提供。 在 Azure DevOps Server 2022 和 2022.1 中,如果沒有明確設定,CI 觸發器會預設啟用。
要在管線中停用 CI 觸發器,請使用以下語法。
trigger: none
YAML 管線支援以下儲存庫類型的 CI 觸發器。 關於使用特定儲存庫類型的 CI 觸發器的具體資訊,請參閱以下文章。
- Azure Repos Git 中的 CI 觸發條件
- GitHub 中的 CI 觸發條件
- GitHub Enterprise Server 中的 CI 觸發程序
- Bitbucket Cloud 中的 CI 觸發條件
欲了解完整的 YAML 觸發器語法及 CI 觸發器的選項,請參見 觸發定義。
Important
Git 中的路徑是大小寫區分的,包括 CI 和 PR 觸發路徑過濾器。
PR 觸發程序
拉取請求(PR)觸發器會在你開啟拉取請求時,或當你將變更推送到拉取請求的來源分支時,會使管線自動執行。 使用 pr 關鍵字來設定 PR 觸發器。 例如,當 PR 被提升到 main 分支時,要執行管線,請指定以下觸發條件。
pr:
- main
如果你在管線中沒有明確設定 PR 觸發器,它們預設會啟用,除非 UI 設定覆蓋 YAML 觸發器。 對任何分支提出的提取要求都會觸發管線執行作業。 要在你的管線中停用 PR 觸發器,請使用以下語法。
pr: none
GitHub 和 Bitbucket Cloud 支援 YAML PR 觸發器。 欲了解更多關於在這類倉庫中使用 PR 觸發器的資訊,請參閱 GitHub 中的
Azure Repos Git 使用分支策略來實現 PR 觸發器。 更多資訊請參閱 Azure Repos Git 中的 PR 觸發器。
批注觸發程式
留言觸發條件會將管線設定為在貢獻者留下包含提取要求指令的提取要求留言(例如 /azp run)時執行。 留言觸發器僅支援 GitHub 倉庫。 欲了解更多資訊,請參閱 GitHub 倉庫留言觸發器。
排定的觸發條件
排程觸發器會按照預先定義的排程執行管線作業。 所有支援 YAML 管線的儲存庫類型 都支援 YAML 管線中的排程觸發器。 這些儲存庫類型包括 Azure Repos Git、GitHub、GitHub Enterprise Server 以及 Bitbucket Cloud。
要在 YAML 中定義排程觸發器,請使用 schedules 關鍵字,並使用 cron 語法定義排程。 以下範例配置每日午夜運行的排程。
# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
欲了解更多資訊與範例,請參閱 排程觸發器、 排程定義及 schedules.cron 定義。
管線完成時觸發條件
YAML 管線中的管線觸發程序和傳統建置管線中的建置完成觸發程序,可讓您在另一個管線完成後觸發某個管線。
在您的管線中設定管線資源觸發程序,以便在來源管線完成執行後啟動管線執行。
resources:
pipelines:
- pipeline: sourcePipelineResource # Label for this pipeline resource; used when referring to it elsewhere in the pipeline.
source: source-pipeline # The name of the pipeline referenced by this pipeline resource.
project: FabrikamProject # Required only if the source pipeline is in another project
trigger: true # Run this pipeline when any run of source-pipeline completes
你可以在管線中新增多個管線資源。 你可以將觸發程序設定為在來源管線的任何版本完成時執行,或將其限制為僅在特定分支上執行。
欲了解更多資訊與範例,請參閱 管線完成觸發器。
完整語法與觸發選項請參見 resources.pipelines.pipeline 定義。
YAML 管線中觸發條件的分支考量
YAML 管線在不同的分支中可以有不同的管線版本,這可能會影響評估管線觸發程式的版本,以及管線應該執行的版本。
| 觸發程序類型 | 管線 YAML 版本 |
|---|---|
CI 觸發條件 (trigger) |
會使用已推送分支中的管線版本。 |
PR 觸發條件 (pr) |
會使用拉取請求中來源分支的管線版本。 |
| GitHub 拉取請求留言觸發條件 | 會使用拉取請求中來源分支的管線版本。 |
| 排定的觸發條件 | 請參閱已排程觸發程序的分支考量事項。 |
| 管線完成時觸發條件 | 請參閱 管線完成觸發程序的分支考量。 |
YAML 管線的資源觸發器
資源庫觸發器讓你在變更落入定義為 repositories 資源的倉庫時啟動管線。 在資源上設定 CI 式trigger過濾器,讓外部 Azure Repos Git、GitHub、GitHub Enterprise 或 Bitbucket Cloud 倉庫中的提交或 PR 都能啟動目前管線的執行。
Azure Pipelines 也支援其他資源類型的類似事件驅動觸發器:
-
pipelines:完成上游 CI 管線(可選分支、標籤及階段過濾器)後 -
builds:來自外部CI系統(如Jenkins)的新產物 -
containers: on new image tags in Azure Container Registry -
packages: 在新的 NuGet 或 npm GitHub 套件版本上 -
webhooks:透過外部服務如 GitHub、Nexus 或 Artifactory 透過進來的 webhook 服務連線,任意事件發生
欲了解更多資訊,請參閱 YAML 管線中的資源。
YAML 管線的一般 Webhook 型觸發程式
YAML 管線中的 Webhook 觸發支援允許您透過 webhook 訂閱任何外部服務(如 GitHub、GitHub Enterprise、Nexus 或 Artifactory)的事件,並自動觸發管線。 此功能將自動化觸發器擴展到內建資源之外,如管線、容器、建置和套件。 你可以將管線自動化整合到任何外部服務中。
要使用此功能,請在你的 YAML 管線中resources.webhooks定義一個webhook資源,並指向訂閱該事件的 webhook 服務連線。 你可以針對 JSON payload 加過濾器,讓每個管線執行時微調,並在工作中以變數存取有效載荷值。
resources:
webhooks:
- webhook: MyWebhookTrigger ### Webhook alias
connection: MyWebhookConnection ### Incoming webhook service connection
filters:
- path: repositoryName ### JSON path in the payload
value: maven-releases ### Expected value in the path provided
- path: action
value: CREATED
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
### JSON payload data is available in the form of ${{ parameters.<WebhookAlias>.<JSONPath>}}
script: |
Write-Host ${{ parameters.MyWebhookTrigger.repositoryName}}
Write-Host ${{ parameters.MyWebhookTrigger.component.group}}
欲了解更多資訊,請參閱 YAML 管線的通用 webhook 觸發器 及 resources.webhooks.webhook 定義。
傳統發行管線
持續部署觸發程式 可協助您在傳統組建或 YAML 管線完成之後啟動傳統版本。
排程發行觸發程式 可讓您根據排程執行發行管線。
提取請求發行觸發程序 用於使用傳統發行直接部署提取請求。
傳統版本中的階段觸發程序可用來設定傳統版本中每個階段的觸發方式。