首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Azure Devops管道中,如何确定git提交标记是否仅来自主分支

在Azure Devops管道中,如何确定git提交标记是否仅来自主分支
EN

Stack Overflow用户
提问于 2021-08-13 16:20:23
回答 2查看 418关注 0票数 1

案例:我有一个azure Devops管道,它将代码部署到PRODDUCTION。它将标签名称(由开发人员在主分支提交时创建的标签)作为输入,因此它只能部署来自主分支的特定版本的代码。此管道设置为无自动触发器,开发人员在主分支中标记提交&将该标记名称提供给运营团队,以将其作为运行时参数输入(管道的输入)

我使用azure devops管道的部署任务中的签出步骤来签出代码。

代码语言:javascript
复制
    deploy:
      steps:
      - checkout: git://MY_PROJECT/MY_REPO@refs/tags/${{variables.tag_name}}

查询:如何(在部署前)确保此标签仅来自主分支,而不是来自其他非主分支。(开发者也可以在主分支上创建标签)

我知道我们可以使用'git commit --包含‘和'git describe’这样的脚本,但是我们如何有效地处理它,以及围绕它的任何建议和最佳实践。

EN

回答 2

Stack Overflow用户

发布于 2021-08-14 09:26:44

您是否尝试过:

代码语言:javascript
复制
trigger:
- master

您还可以使用powershell步骤来控制该版本中使用"Build.SourceBranch“系统变量链接的工件的源代码分支

票数 1
EN

Stack Overflow用户

发布于 2021-08-25 19:36:10

我遇到了完全相同的问题。我通过添加以下检查作为部署管道中的第一步来解决这个问题。

代码语言:javascript
复制
steps:
  - checkout: self
    clean: true
    persistCredentials: true
  - bash: |
      set -e

      COMMIT_ID=$(Build.SourceVersion)
      BRANCH=master

      git checkout $BRANCH

      RES=$(git branch --contains $COMMIT_ID)

      if [[ -z $RES ]]; then
        exit 1
      fi

      exit 0
    condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/')

基本上,我们检查标记的提交是否在主分支上。如果没有,部署管道将在此时失败,而不会部署代码的标记版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68775559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档