![](/img/trans.png)
[英]Azure Devops Trigger a Pipeline from Multiple Stages of Other Pipeline
[英]How to use a single agent for multiple jobs/stages in azure devops YAML pipeline
我正在處理 Azure DevOps YAML 管道,我不確定我們是否可以在整個管道中使用單個代理。 我有多個作業/階段——構建、部署、部署后,我想將其分配給單個代理,因為它使用相同的工件。 有沒有辦法通過管道分配單個代理。
提前致謝。
是的,您可以在 YAML 上定義特定代理。
例如:池:名稱:AgentPoolName 要求:- agent.name -equals AgentName
https://docs.microsoft.com/en-us/azure/devops/pipelines/process/demands?view=azure-devops&tabs=yaml
如果您不能像@Savio Moreira 建議的那樣使用特定代理,我發現的唯一選擇是重復一些步驟。
在我的情況下,有一個類似的管道,有 2 個階段:
僅當使用 YAML 階段和啟用分支策略中的條件創建 PR 時,才會觸發構建部分。 Publish 部分僅在合並到 master 時觸發。
需要重復一些步驟但執行是唯一的,這有點煩人,並且使用相同的管道,我可以在合並之前執行驗證,然后在代碼進入 master 后創建工件。
結帳選項無濟於事,因為在我的情況下,每個階段都在完全不同的容器上執行。
是的,您需要做的就是將您第一份工作的代理名稱存儲在一個變量中,然后對於您需要的任何其他工作,您需要詢問同一個代理。 它是這樣完成的——
jobs:
- job: A
steps:
- bash: |
echo "##vso[task.setvariable variable=AgentName;isoutput=true]$(Agent.Name)"
name: passOutput
- job: B
dependsOn: A
variables:
AgentName: $[ dependencies.A.outputs['passOutput.AgentName'] ]
pool:
name: pool1
demands: Agent.Name -equals $(Agent.Name)
steps:
- bash: |
echo $(AgentName)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.