将标签推送到外部 git 不会触发 Azure Pipelines CI
Posted
技术标签:
【中文标题】将标签推送到外部 git 不会触发 Azure Pipelines CI【英文标题】:Azure Pipelines CI not triggered by pushing tags to external git 【发布时间】:2020-06-30 19:10:02 【问题描述】:我在组织的本地 GitLab 服务器上有存储库,并且想要触发构建管道,然后将触发发布管道并发布到暂存/生产虚拟机。
我在 microsoft docs、SO 和大量博客上阅读了很多文章,您可以通过提供分支过滤器(如 refs/tags/v*
)的标签来触发管道。 YAML 配置有额外的标签专用部分,但是作为“其他 git”连接的 git 存储库不支持 YAML。
而且那个标签触发器永远不会起作用。在我设置触发 UI 后,我只显示“v*”,因此它理解 refs/tags 具有特殊含义。我可以手动运行管道,指定确切的标签,比如refs/tags/v1.0-test
,它可以工作。但永远不会自动启动。分支触发器可以正常工作。
我已经尝试过的:
为refs/tags/v*
设置包含过滤器 - 不起作用
为refs/tags/exacttagname
设置包含过滤器 - 不起作用
为refs/tags/v*
设置一个过滤器,为master
设置另一个过滤器 - 仅对主控触发li>
设置包括refs/tags/v*
、*
的过滤器并排除refs/heads/*
和refs/remotes/*
的过滤器 - 不起作用
我尝试推送提交,然后推送标签。尝试使用git push ---follow-tags
在一个请求中推送提交和标记。尝试为较旧的提交推送标签。这些都不起作用。
This issue 去年夏天在 azure 方面解决了同样的问题,但所有 cmets 都在 GitHub 集成方面。所以也许它仍然被“其他 git”或其他东西破坏了。
有什么帮助吗?
【问题讨论】:
【参考方案1】:我测试并得到了相同的结果,其他 git 的标签触发器不起作用。您可以submit a feature request(单击建议功能并选择 Azure devops)为 Micrsoft 开发团队支持 gitlab 存储库的标记触发器。例如,请检查this thread。
作为解决方法,您目前可以使用多个代理作业来实现上述目标。
您可以在原始代理作业之前添加另一个代理作业以运行脚本任务,并在原始代理作业中添加对它的依赖。脚本任务将检查是否存在与当前提交关联的标签。如果标签退出,则脚本任务将通过,并且将运行以下代理作业。或者脚本任务失败,会跳过后面的代理作业。
具体步骤如下:
添加具有单个 Powershell 任务的代理作业。检查下面的屏幕截图。
在 powershell 任务中运行以下内联脚本以检查标签
$tags = git describe --tags $(Build.SourceVersion)
if($($tags) -notmatch 'v.')exit 1 #fail the task if the tag doesnot match v*
在原来的代理作业中,将dependencies添加到上面的代理作业中。
转到触发器选项卡并过滤所有分支。
【讨论】:
在创建功能请求时,我发现了existing one(但讨论本身是关于 Bitbucket repo)。也问了关于那里的支持的问题。 @LeviLu-MSFT 所以触发标签适用于 yaml 管道,但不适用于经典管道?以上是关于将标签推送到外部 git 不会触发 Azure Pipelines CI的主要内容,如果未能解决你的问题,请参考以下文章
Azure Visual Studio 2019 无法推送到 Azure DevOps Git