Tagging a TFS Git repository during a release

我的未来我决定 提交于 2019-12-21 05:02:59

问题


I am setting our build/release environment using TFS 2017.

I set up the Build to run automatically after each commit, and when we are ready to release a version of our application, a Release is manually created, and then deployed to various environments.

We would like to tag released versions in our git repository in order to easily know which git revision correspond to a binary. The "Label Source" setting in the Build definition allows to tag a git revision at build time, but since we build on every commit that would generate a lot of tags which we don't care about (as they are not deployed anywhere until a release is made).

How can TFS be setup so that when a Release is created (or possibly, deployed to an environment), a tag is created on the corresponding commit in our Git repository?


回答1:


You can add tags by using REST API:

POST https://{instance}/DefaultCollection/_apis/git/repositories/{repository}/refs?api-version={version}

[
  {
    "name": {string},
    "oldObjectId": {string}, (The current commit id the ref is at. 0000000000000000000000000000000000000000 when creating a new ref.)
    "newObjectId": {string}
  }
]

Calling Rest API through PowerShell:

$result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

More information, you can refer to Calling VSTS APIs with PowerShell (apply to tfs 2017)




回答2:


I have built a vsts extension that does exactly this: https://marketplace.visualstudio.com/items?itemName=jabbera.git-tag-on-release-task




回答3:


You can add a command line task in your release definition and use git command git tag -a vx.x $(Build.SourceVersion) -m "xxx" to add a tag, check the screenshot below:

=========================================================================

Update:

In order to avoid specifying the working folder where the git reop checked out, you can publish the $(build.sourcesdirectory) to drop folder in build definition, then in release definition, you can simply select the drop folder directory. Check the screenshots below:



来源:https://stackoverflow.com/questions/42860399/tagging-a-tfs-git-repository-during-a-release

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!