首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TeamCity ::如何在Java中访问teamcity build ID

TeamCity ::如何在Java中访问teamcity build ID
EN

Stack Overflow用户
提问于 2016-10-04 13:52:57
回答 4查看 5.1K关注 0票数 15

Teamcity构建ID (不同于BUILD_NUMBER)用于各种URL。我想发送一封电子邮件,其中有一个构建的文物/概述等路径。

在Java中,我们可以获得当前运行的teamcity内部版本号,如下所示:

代码语言:javascript
复制
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的值

EN

回答 4

Stack Overflow用户

发布于 2016-10-13 22:29:56

您是否正在使用构建运行器执行java代码?

如果是这样,那么您应该能够将%system.teamcity.build.id%传递给运行器,并使其可用于您的代码。

例如,如果您使用的是命令行运行器

代码语言:javascript
复制
java -Dbuild_id=%system.teamcity.build.id%

,然后可以作为系统参数进行访问。

或者,如果你使用gradle,你可以这样做

代码语言:javascript
复制
if (project.hasProperty("teamcity")) {
    version = project.teamcity["teamcity.build.id"]
}

并将'version‘传递给java命令行。

在maven中,您可以使用以下命令访问它:

代码语言:javascript
复制
${teamcity.build.id}

在你的pom.xml中

(我需要更多关于您如何运行java的信息来具体回答这个问题)

票数 6
EN

Stack Overflow用户

发布于 2017-04-10 12:39:23

我注意到很多人都想知道这个问题的答案。幸运的是,在@Jayan的评论的帮助下,我能够解决我的确切问题,那就是如何获得构建工件的URL。

如链接https://confluence.jetbrains.com/display/TCD10/Patterns+For+Accessing+Build+Artifacts中所述,默认情况下,TeamCity使用内部构建ID作为可用于访问构建工件的路径:

代码语言:javascript
复制
/repository/download/BUILD_TYPE_EXT_ID/BUILD_ID:id/ARTIFACT_PATH

在运行时访问构建Id可能很困难(这就是这个问题的原因),但我们也可以使用构建号来访问工件

代码语言:javascript
复制
/repository/download/BUILD_TYPE_EXT_ID/BUILD_NUMBER/ARTIFACT_PATH

如我的问题中所示,内部版本号可以通过以下方式访问

代码语言:javascript
复制
String BUILD_NUMBER= System.getenv("BUILD_NUMBER");

代码语言:javascript
复制
String BUILD_TYPE_EXT_ID = System.getenv("TEAMCITY_BUILDCONF_NAME");
票数 2
EN

Stack Overflow用户

发布于 2016-10-04 20:07:46

可以,但您可以使用值"%system.teamcity.buildType.id%“创建env var并在构建中读取它。之后,您可以执行api请求,如下所示:

代码语言:javascript
复制
$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中,这可能会更容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39845031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档