在发布期间标记 TFS Git 存储库
Tagging a TFS Git repository during a release
我正在使用 TFS 2017 设置我们的 build/release 环境。
我在每次提交后自动将 Build 设置为 运行,当我们准备发布应用程序的一个版本时,会手动创建一个 Release,然后部署到各种环境。
我们想在我们的 git 存储库中标记已发布的版本,以便轻松知道哪个 git 修订版对应于二进制文件。 Build 定义中的 "Label Source" 设置允许在构建时标记 git 修订版,但是由于我们在每次提交时构建都会生成很多我们不关心的标签(因为它们是在发布之前不会部署到任何地方。
如何设置 TFS,以便在创建发布(或可能部署到环境)时,在我们的 Git 存储库中的相应提交上创建标签?
您可以在发布定义中添加命令行任务并使用 git 命令 git tag -a vx.x $(Build.SourceVersion) -m "xxx"
要添加标签,请查看下面的屏幕截图:
============================================= ============================
更新:
为了避免指定 git reop 签出的工作文件夹,您可以在构建定义中将 $(build.sourcesdirectory)
发布到放置文件夹,然后在发布定义中,您可以简单地 select 拖放文件夹目录。查看下面的屏幕截图:
您可以使用 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}
}
]
通过 PowerShell 调用 Rest API:
$result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
更多信息,可以参考Calling VSTS APIs with PowerShell(适用于tfs 2017)
我已经构建了一个 vsts 扩展,正是这样做的:https://marketplace.visualstudio.com/items?itemName=jabbera.git-tag-on-release-task
我正在使用 TFS 2017 设置我们的 build/release 环境。
我在每次提交后自动将 Build 设置为 运行,当我们准备发布应用程序的一个版本时,会手动创建一个 Release,然后部署到各种环境。
我们想在我们的 git 存储库中标记已发布的版本,以便轻松知道哪个 git 修订版对应于二进制文件。 Build 定义中的 "Label Source" 设置允许在构建时标记 git 修订版,但是由于我们在每次提交时构建都会生成很多我们不关心的标签(因为它们是在发布之前不会部署到任何地方。
如何设置 TFS,以便在创建发布(或可能部署到环境)时,在我们的 Git 存储库中的相应提交上创建标签?
您可以在发布定义中添加命令行任务并使用 git 命令 git tag -a vx.x $(Build.SourceVersion) -m "xxx"
要添加标签,请查看下面的屏幕截图:
============================================= ============================
更新:
为了避免指定 git reop 签出的工作文件夹,您可以在构建定义中将 $(build.sourcesdirectory)
发布到放置文件夹,然后在发布定义中,您可以简单地 select 拖放文件夹目录。查看下面的屏幕截图:
您可以使用 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}
}
]
通过 PowerShell 调用 Rest API:
$result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
更多信息,可以参考Calling VSTS APIs with PowerShell(适用于tfs 2017)
我已经构建了一个 vsts 扩展,正是这样做的:https://marketplace.visualstudio.com/items?itemName=jabbera.git-tag-on-release-task