基于 azure devops yml 的管道中的 git commit 和 git tag

Sam*_*tel 5 azure-devops

有没有一种很好的方法来提交更改文件并在基于 azure DevOps yaml 的管道中创建标签?

我的场景将是基于节点 js 的构建:每次构建,它将通过使用更改 package.json 版本npm version patch 最后,它将 package.json 推送到构建分支(显然条件是 branch==master)并将标记并推送一个分支。

肮脏的方式可以是:

- bash : |
     git add filename.ext
     git push origin HEAD:branchName
     git tag -a tagName -m 'tag message' 
     git push --tags
  displayName: 'Git Commit and Tag from pipeline'
Run Code Online (Sandbox Code Playgroud)

Pau*_*her 8

您可以在 yaml 构建步骤中执行此操作,但重要的是您需要管道拥有执行推送的权限,最简单的方法是在结账时保留凭证,如下所示。

然后,您需要授予项目集合构建服务 创建标签贡献(添加/删除文件)权限。

我还发现我必须设置工作目录才能使推送工作

steps:
# Check out the code and keep the token so we can tag the repository
- checkout: self
  persistCredentials: true

--- rest of pipeline

# Tag the current branch with the version number
- script: |
    git add filename.ext
    git push origin
    git tag -a tagName -m 'tag message' 
    git push --tags
  workingDirectory: $(Build.SourcesDirectory)
  displayName: 'Git Commit and Tag from pipeline'
Run Code Online (Sandbox Code Playgroud)


Lev*_*SFT 7

您是对的,要在 azure devops 管道中提交更改并推送到源代码库,您可能必须在脚本任务中运行 git 命令。

在脚本任务中,您在 repo clone url 中的 accountName 需要替换为以$(System.AccessToken)进行身份验证(例如https://$(System.AccessToken)@dev.azure.com/yourOrg/yourProj/_git/repoName)。

您可以查看下面的示例来标记和推送一个 azure 分支。

- bash: | 
        git config --global user.email "your@email.com"
        git config --global user.name "yourUsername"

        #git add filename.ext
        git add .
        git commit -m "message" 

        git push https://$(System.AccessToken)@dev.azure.com/yourOrg/yourProj/_git/repoName HEAD:master -q

        git tag -a tagName -m 'tag message'
        git push https://$(System.AccessToken)@dev.azure.com/yourOrg/yourProj/_git/repoName tagName 
Run Code Online (Sandbox Code Playgroud)