gpt4 book ai didi

git - 标签触发器在 azure 管道中不起作用

转载 作者:行者123 更新时间:2023-12-02 23:13:45 24 4
gpt4 key购买 nike

我在同一存储库的两个不同分支中有完全相同的管道,stageprod .

我想要分支 stage 上的管道当标签以 stage@ 开头时运行创建(例如 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="52212633353712637c627c63" rel="noreferrer noopener nofollow">[email protected]</a> );同样,我想要分支 prod 上的管道当标签以 prod@ 开头时运行创建(例如 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d2a2a0bdb692e3fce2fce3" rel="noreferrer noopener nofollow">[email protected]</a> )。

在分行stage ,触发器定义如下:

# .azure-pipelines.yml [refs/branches/stage]

trigger:
tags:
include:
- stage@*

在分行prod ,触发器定义如下:

# .azure-pipelines.yml [refs/branches/prod]

trigger:
tags:
include:
- prod@*

现在我在 Azure DevOps 上创建了一个名为 [Deploy to STAGE] 的管道来自 stage 中的文件分支,其中一个名为 [Deploy to PROD]来自 prod 中的文件分支。

我尝试创建一个标签:

$ git branch
master
prod
* stage

$ git tag -a <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="75060114121035445b455b43" rel="noreferrer noopener nofollow">[email protected]</a> -m "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="572423363032176679677961" rel="noreferrer noopener nofollow">[email protected]</a>"
$ git push --tags

我期望 [Deploy to STAGE]管道启动,但两个管道都启动了:

enter image description here

我错过了什么吗?触发器不是应该只包含与定义模式匹配的标签吗?如何纠正触发器以实现所描述的流程?

最佳答案

这两个管道部署到 STAGE部署到 Prod 是两个相同的管道。虽然您在创建管道 Deploy to Prod 时选择了分支 Prod 中的文件,但该管道也适用于 Stage 分支。这是因为两个管道都使用相同的 azure-pipelines.yml 文件,并且该文件同时存在于 stage 和 prod 分支上。

从构建运行的屏幕截图中,您可以看到两个管道正在构建完全相同的阶段标记。如果您将标签添加到 prod 分支,您将看到两个管道也会被触发。

实际上您只需要创建两个管道之一。它们都适用于 prod 和 stage 分支。因此,您只需删除管道部署到产品即可。当您将标签推送到 prod 分支时。您会注意到管道Deploy to STAGE正在构建prod标签。

如果您必须创建两个管道。您需要重命名 prod 分支中的 azure-pipelines.yml 文件,或者使用某些内容和不同的名称创建一个新的 yml 文件。并从这个新的 yml 文件创建管道部署到 PROD

如果选择新建yml文件来创建管道部署到PROD,则需要在原来的azure-pipelines中禁用触发器(trigger: none) .yml 文件放在 prod 分支中,这样当 tag 推送到 prod 分支时,就不会触发 pipeline Deploy to Stage 来构建 prod tag。

总而言之,如果要为不同的分支创建不同的管道,则必须创建不同的管道 yml 文件。

关于git - 标签触发器在 azure 管道中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64569496/

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