在 Azure Devops 上完成拉取请求后,如何自动“git tag -a”?
Posted
技术标签:
【中文标题】在 Azure Devops 上完成拉取请求后,如何自动“git tag -a”?【英文标题】:How to automatically 'git tag -a' after a pull request has completed on Azure Devops? 【发布时间】:2020-06-17 19:38:17 【问题描述】:一旦拉取请求 (PR) 完成,我们如何在master
上添加自定义注释标签,自动?
更多背景:
使用azure-pipelines.yml
master
上的分支策略强制使用 PR
我们有一个存储库,其中包含 Azure Devops 管道模板(“devops 模板存储库”)
其他存储库具有引用“devops 模板”存储库的根管道文件
我们使用 SEMVER 来标记我们的产品,包括 devops 模板存储库
在根管道中,我们希望固定到 devops 模板存储库的 SEMVER 版本
我们目前用以下每个标记手动以指向 PR 完成后发生的合并提交
"vMAJOR
.MINOR
.PATCH
"
"vMAJOR
.MINOR
"
“vMAJOR
”
锁定MAJOR
仅示例:
resources:
repositories:
- repository: templates
type: git
name: template_devops_pipelines
ref: "refs/tags/v1"
【问题讨论】:
你可以考虑在管道中使用这个rest api来创建git标签。 听起来我们需要一个标记管道,因为我们的 PR 合并在 prod 阶段完成之前不会完成。 如果你配置了分支策略,你可以创建一个管道(启用CI)来调用rest api,它可能会满足你的需求。 【参考方案1】:我使用的一个示例标记管道:
trigger:
- main
variables:
user.email: "devops@myorganization.com"
user.name: "DevOps"
defaultBranch: "main"
major: 1
minor: 0
patch: $[counter(variables['patch'], 2)]
name: $(major).$(minor).$(patch)
steps:
- checkout: self
persistCredentials: true
- script: |
git config user.email $variables['user.email']
git config user.name $variables['user.name']
displayName: 'configure git credentials'
- script: |
git tag "$(Build.BuildNumber)"
git push origin "$(Build.BuildNumber)"
displayName: 'git tag'
condition: eq(variables['Build.SourceBranchName'], variables['defaultBranch'])
你基本上需要三样东西:
-
使用
persistCredentials
结帐 - 这样您的管道就可以标记并稍后推送
配置 git user.email 和 user.password
标记和推送
对于最后一步,您需要为管道构建服务帐户分配“贡献”权限。转到:Project Settings -> Repositiories -> your repo -> Security
,找到用户your organization Build Service
,并将贡献设置为Allow
。
【讨论】:
以上是关于在 Azure Devops 上完成拉取请求后,如何自动“git tag -a”?的主要内容,如果未能解决你的问题,请参考以下文章
Azure DevOps GIT(gitflow)如何在开发分支上强制执行拉取请求以保持源最新?
将拉取请求描述复制到 Azure Devops 上的工作项评论
在 Azure DevOps 中对拉取请求运行选择性测试用例