gpt4 book ai didi

azure - 触发 Azure Devops 项目中存在的另一个构建

转载 作者:行者123 更新时间:2023-12-03 05:31:45 24 4
gpt4 key购买 nike

我有一个名为 A 的存储库名称,其构建管道为 azure-pipelines.yml然后我有另一个名为 B 的存储库,其构建管道为 azure-pipelines.yml

AB都在同一个项目ProjectA

这是流程

  1. repo A,build => 发布(阶段操作和开发)
  2. repo B,构建创建工件并存储工件

所以,我想要实现的是,一旦从存储库 A 发布完成,它应该触发构建存储库 B。我的管道 A 如下所示:

name: SomethingFancy

trigger:
- none

resources:
containers:
- container: docker
image: docker:1.6
- container: python3
image: python:3

variables:
major: 2
minor: 0

所以我使管道B看起来像这样:

name: 

trigger:
- none

resources:
pipelines:
- pipeline: SomethingFancy
source: azure-pipelines
branch: DATA-1234
project: ProjectA
trigger:
branches:
- DATA-1234
stages:
- dev
- ops
containers:
- container: docker
image: docker:1.6

到目前为止,我无法运行管道,因为它提示“管道资源 SomethingFancy 输入必须有效”。根据文档,它是#资源标识符(在管道资源变量中使用)

我指的是[this][1]来收集资源。

我还打算使用 [api][2] 调用对 B 的构建进行排队,但无法找到帖子消息的正文,例如如何添加管道B的分支,或者如何向B的管道传递参数

编辑

请参阅附件中我的管道名称[![在此处输入图像描述][3]][3]构建源管道也称为 azurepipelines.yml ,发布管道有一个阶段称为 Dev

现在我的管道 B 看起来像这样:

resources:
pipelines:
- pipeline: azurepipelines
source: azurepipelines
branch: DATA-1234
project: ProjectA
trigger:
branches:
- DATA-1234
stages:
- Dev

我仍然没有看到 B 的构建管道有任何自动启动。[1]:https://learn.microsoft.com/en-us/azure/devops/pipelines/process/resources?view=azure-devops&tabs=example#resources-pipelines[2]:https://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/queue?view=azure-devops-rest-5.1[3]:/image/2Uk7A.png

最佳答案

经过一番努力和这里智者的帮助,我终于成功解决了这个问题。我在这里发帖,以便任何人都可以引用。现在正在工作引用: ListBuildQueueTheBuild

name="ProjectA"
curl --silent -X GET -H "Authorization:Bearer $(System.AccessToken)" -H "Content-Type:application/json" $(System.TeamFoundationCollectionUri)/$(System.TeamProject)/_apis/build/definitions?api-version=6.0 --output /tmp/response.json
#Now get the build-id of your project you are interested in
#please be aware that api-version > 6 has different json output and below command
#may not help you to give the right id
id=$(cat /tmp/response.json | jq -r --arg key ${name} '.value[] | select(.name==$key)| .id' --raw-output)
#create your body to post
generate_post_data()
{
cat <<EOF
{
"sourceBranch":"refs/heads/DATA-1234",
"definition":{"id": $id}
}
EOF
}

#Now queue your build to run
#have to still verify if this command works for API_VERSION 6

curl -X POST \
--silent \
-H "Authorization:Bearer $(System.AccessToken)" \
-H "Content-Type:application/json" \
$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/build/builds?api-version=6.1-preview.6 \
--output /tmp/response1.json \
-d "$(generate_post_data)"
#check the outcome
cat /tmp/response1.json

关于azure - 触发 Azure Devops 项目中存在的另一个构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64824802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com