【问题标题】:How to automatically 'git tag -a' after a pull request has completed on Azure Devops?在 Azure Devops 上完成拉取请求后,如何自动“git tag -a”?
【发布时间】: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,它可能会满足你的需求。

标签: azure-devops azure-pipelines azure-pipelines-yaml


【解决方案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'])

你基本上需要三样东西:

  1. 使用persistCredentials 结帐 - 这样您的管道就可以标记并稍后推送
  2. 配置 git user.email 和 user.password
  3. 标记和推送

对于最后一步,您需要为管道构建服务帐户分配“贡献”权限。转到:Project Settings -> Repositiories -> {your repo} -> Security,找到用户{your organization} Build Service,并将贡献设置为Allow

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 2020-01-25
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多