san*_*3hi 14 java teamcity continuous-integration selenium bamboo
Teamcity Build ID(与BUILD_NUMBER不同)用于各种URL.我想发送一封电子邮件,其中包含构建工件/概述等的路径.
在Java中,我们可以获得当前运行的teamcity内部版本号,如下所示:
String tc_BuildNumber = System.getenv("BUILD_NUMBER");
Run Code Online (Sandbox Code Playgroud)
这是因为TC提供了一个环境变量,即BUILD_NUMBER.但不幸的是,没有与BUILD_ID相对应的环境变量.
TeamCity确实提供了配置参数(如teamcity.build.id)和System属性(如system.teamcity.auth.userId),但我不知道如何使用Java访问这些参数.我想读取teamCity.build.id jusy的值,就像我们可以读取如何在java中获取Teamcity配置的值中提到的环境变量名称一样?
您是否正在使用构建运行器执行Java代码?
如果是这样,那么您应该能够将%system.teamcity.build.id%传递给运行程序,并使它可用于您的代码。
即如果您使用命令行运行程序
java -Dbuild_id=%system.teamcity.build.id%
Run Code Online (Sandbox Code Playgroud)
然后您可以将其作为系统参数进行访问
或者,如果您使用Gradle,则可以执行以下操作
if (project.hasProperty("teamcity")) {
version = project.teamcity["teamcity.build.id"]
}
Run Code Online (Sandbox Code Playgroud)
并将“版本”传递给Java命令行。
在Maven中,您可以使用以下命令进行访问:
${teamcity.build.id}
Run Code Online (Sandbox Code Playgroud)
在你的pom.xml中
(我可以提供有关您如何运行java的更多信息来专门回答此问题)
小智 0
是的,但您可以创建值为“%system.teamcity.buildType.id%”的环境变量并在构建中读取它。之后你可以执行如下 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
Run Code Online (Sandbox Code Playgroud)
这是PS的例子。但想法是一样的。在 Java 中这可能更容易。