如何获取上次成功构建的版本号?
How to get the version number of the last successful build?
背景
我有第三方 Web 服务,其中包含安装和卸载工件的方法。安装和卸载时,您都指定了一个名为 package-%maven.project.version%.zip 的工件。在安装新包之前,我需要卸载以前安装的包。
解决方案
我找到了这个 ,但由于这是实现持续部署的最后一步,我需要自动化而不是提示。
另一个可以通过构建步骤自动化的解决方案是使用 TeamCity REST API:
- 致电http://localhost/httpAuth/app/rest/builds/?locator=buildType:Development,count:1,status:SUCCESS
- 使用步骤 1 中的构建 ID 调用 http://localhost/httpAuth/app/rest/builds/id:[build-id]/resulting-properties
- 从步骤 2 的响应中的以下节点检索值,
<property name="maven.project.version" value="1.2.3"/>
。
问题
有没有比使用 TeamCity REST 更简单的方法 API?
我认为你的方法是正确的。
另一种方法是:
- 您的构建将
%maven.project.version%
打印到文件中
- 您的构建配置将文件发布为工件
- 您下载类似
/repository/download/BUILD_TYPE_EXT_ID/.lastSuccessful/ARTIFACT_PATH
的内容(阅读更多 here)
我想它更容易实现但有点混乱(额外 steps/files = 混乱)。
因此,我决定使用 PowerShell 构建步骤中的 TeamCity REST API 从上次成功构建中检索 %maven.project.version%
:
$client = New-Object System.Net.WebClient
$client.Credentials = New-Object System.Net.NetworkCredential $username, $password
$latestBuildUrl = "http://localhost/httpAuth/app/rest/builds/?locator=buildType:Development,count:1,status:SUCCESS"
[xml]$latestBuild = $client.DownloadString($latestBuildUrl)
$latestBuildId = $latestBuild.builds.build.id
$propertiesUrl = "http://localhost/httpAuth/app/rest/builds/id:$latestBuildId/resulting-properties"
[xml]$properties = $client.DownloadString($propertiesUrl)
$mavenProjectVersion = $properties.SelectSingleNode("//property[@name='maven.project.version']").value
这将适用于 TeamCity Enterprise 2018.1.1:
http://<teamcity_hostname>/httpAuth/app/rest/buildTypes/<your_build_type>/builds/status:success/number
要获取可用的构建类型和其他构建属性,请使用:
http://<teamcity_hostname>/httpAuth/app/rest/builds
背景
我有第三方 Web 服务,其中包含安装和卸载工件的方法。安装和卸载时,您都指定了一个名为 package-%maven.project.version%.zip 的工件。在安装新包之前,我需要卸载以前安装的包。
解决方案
我找到了这个
另一个可以通过构建步骤自动化的解决方案是使用 TeamCity REST API:
- 致电http://localhost/httpAuth/app/rest/builds/?locator=buildType:Development,count:1,status:SUCCESS
- 使用步骤 1 中的构建 ID 调用 http://localhost/httpAuth/app/rest/builds/id:[build-id]/resulting-properties
- 从步骤 2 的响应中的以下节点检索值,
<property name="maven.project.version" value="1.2.3"/>
。
问题
有没有比使用 TeamCity REST 更简单的方法 API?
我认为你的方法是正确的。
另一种方法是:
- 您的构建将
%maven.project.version%
打印到文件中 - 您的构建配置将文件发布为工件
- 您下载类似
/repository/download/BUILD_TYPE_EXT_ID/.lastSuccessful/ARTIFACT_PATH
的内容(阅读更多 here)
我想它更容易实现但有点混乱(额外 steps/files = 混乱)。
因此,我决定使用 PowerShell 构建步骤中的 TeamCity REST API 从上次成功构建中检索 %maven.project.version%
:
$client = New-Object System.Net.WebClient
$client.Credentials = New-Object System.Net.NetworkCredential $username, $password
$latestBuildUrl = "http://localhost/httpAuth/app/rest/builds/?locator=buildType:Development,count:1,status:SUCCESS"
[xml]$latestBuild = $client.DownloadString($latestBuildUrl)
$latestBuildId = $latestBuild.builds.build.id
$propertiesUrl = "http://localhost/httpAuth/app/rest/builds/id:$latestBuildId/resulting-properties"
[xml]$properties = $client.DownloadString($propertiesUrl)
$mavenProjectVersion = $properties.SelectSingleNode("//property[@name='maven.project.version']").value
这将适用于 TeamCity Enterprise 2018.1.1:
http://<teamcity_hostname>/httpAuth/app/rest/buildTypes/<your_build_type>/builds/status:success/number
要获取可用的构建类型和其他构建属性,请使用:
http://<teamcity_hostname>/httpAuth/app/rest/builds