Teamcity构建ID (不同于BUILD_NUMBER)用于各种URL。我想发送一封电子邮件,其中有一个构建的文物/概述等路径。
在Java中,我们可以获得当前运行的teamcity内部版本号,如下所示:
String tc_BuildNumber = System.getenv("BUILD_NUMBER");这是因为TC提供了一个环境变量,即BUILD_NUMBER。但不幸的是,没有与BUILD_ID相对应的环境变量。
TeamCity确实提供了配置参数(如teamcity.build.id)和系统属性(如system.teamcity.auth.userId),但我不知道如何使用Java访问它们。我希望像读取How to fetch the Value of Teamcity Configuration in java?中提到的环境变量名称一样读取teamCity.build.id jusy的值
发布于 2016-10-13 22:29:56
您是否正在使用构建运行器执行java代码?
如果是这样,那么您应该能够将%system.teamcity.build.id%传递给运行器,并使其可用于您的代码。
例如,如果您使用的是命令行运行器
java -Dbuild_id=%system.teamcity.build.id%,然后可以作为系统参数进行访问。
或者,如果你使用gradle,你可以这样做
if (project.hasProperty("teamcity")) {
version = project.teamcity["teamcity.build.id"]
}并将'version‘传递给java命令行。
在maven中,您可以使用以下命令访问它:
${teamcity.build.id}在你的pom.xml中
(我需要更多关于您如何运行java的信息来具体回答这个问题)
发布于 2017-04-10 12:39:23
我注意到很多人都想知道这个问题的答案。幸运的是,在@Jayan的评论的帮助下,我能够解决我的确切问题,那就是如何获得构建工件的URL。
如链接https://confluence.jetbrains.com/display/TCD10/Patterns+For+Accessing+Build+Artifacts中所述,默认情况下,TeamCity使用内部构建ID作为可用于访问构建工件的路径:
/repository/download/BUILD_TYPE_EXT_ID/BUILD_ID:id/ARTIFACT_PATH在运行时访问构建Id可能很困难(这就是这个问题的原因),但我们也可以使用构建号来访问工件
/repository/download/BUILD_TYPE_EXT_ID/BUILD_NUMBER/ARTIFACT_PATH如我的问题中所示,内部版本号可以通过以下方式访问
String BUILD_NUMBER= System.getenv("BUILD_NUMBER");和
String BUILD_TYPE_EXT_ID = System.getenv("TEAMCITY_BUILDCONF_NAME");发布于 2016-10-04 20:07:46
可以,但您可以使用值"%system.teamcity.buildType.id%“创建env var并在构建中读取它。之后,您可以执行api请求,如下所示:
$APIURL = "${API_BaseUrl}/httpAuth/app/rest/builds/?locator=buildType:${API_BuildType},state:running,count:1"
$APIXML = (Invoke-RestMethod -Headers $API_CredentialsHeader -Credential $API_Credentials -Uri $APIURL -Method GET -ContentType "application/xml" -TimeoutSec 20)
# Here you build id.
$APIXML.builds.build.id这是PS示例。但是想法是一样的。在Java中,这可能会更容易。
https://stackoverflow.com/questions/39845031
复制相似问题