2016-10-04 11 views
14

Teamcity Build ID(BUILD_NUMBERとは異なる)は、さまざまなURLで使用されています。私は次のように我々は現在、チームシティーのビルド番号を実行している得ることができ、Javaではビルドの成果物/概要などのパスTeamCity :: JavaでteamcityビルドIDにアクセスするには

を持つ電子メールを送信したい:

String tc_BuildNumber = System.getenv("BUILD_NUMBER"); 

TC、すなわち環境変数を提供するため、これは、ビルド番号。 残念ながら、BUILD_IDに対応する環境変数はありません。

TeamCityは構成パラメータ(teamcity.build.idなど)とシステムプロパティ(system.teamcity.auth.userIdなど)を提供しますが、Javaを使用してこれらにアクセスする方法はわかりません。私はteamCity.build.id jusyの値を読みたいと思います。How to fetch the Value of Teamcity Configuration in java?

+0

TeamCityプラグインの内部からコードを実行していますか? – Sergi

+0

Javaクラスファイルの上記のコード。 JavaプロジェクトがTCビルドステップの1つで実行された場合、上記の行が実行され、現在のビルド番号が与えられます。 – san1deep2set3hi

+1

ビルドIDは環境変数として公開されていません。あなたはURLを含む他の方法をチェックしましたか? - https://confluence.jetbrains.com/display/TCD10/Patterns+For+Accessing+Build+Artifacts – Jayan

答えて

0

はい、値 "%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で。

+0

こんにちは。変数を事前に設定するのではなく、実行中にその値を読み取る必要があります – san1deep2set3hi

5

ビルドランナーを使用してJavaコードを実行していますか?

もしそうなら、%system.teamcity.build.id%をランナーに渡して、コードで利用できるようにする必要があります。

つまり、あなたは、システムの引数としてアクセスすることができ、コマンドラインランナー

java -Dbuild_id=%system.teamcity.build.id% 

を使用している場合

それとも、Gradleのを使用している場合、あなたは

if (project.hasProperty("teamcity")) { 
    version = project.teamcity["teamcity.build.id"] 
} 
ような何かを行うことができます

とjavaコマンドラインに 'version'を渡します。

のmavenでは、あなただけ使用してアクセスすることができます

${teamcity.build.id} 

をあなたのpom.xmlに

(私はあなたがこれを具体的に答えるためにJavaを実行しているかについて、もう少し詳細に行うことができます)

+0

こんにちは。変数を事前に設定するのではなく、実行中にその値を読み取ろうとしています – san1deep2set3hi

+0

はい、実行中は何ですか?ビルド、またはそのビルドから構築されたジャーを実行しているとき? –

+0

ここで私はビルドの実行を参照しています。ありがとう。 – san1deep2set3hi

0

多くの人がこの質問に対する答えを知りたいと思っています。 幸いにも@Jayanのコメントの助けを借りて、ビルド成果物のURLを取得する方法だった私の正確な問題を解決することができました。デフォルトでは、リンクhttps://confluence.jetbrains.com/display/TCD10/Patterns+For+Accessing+Build+Artifactsで述べたように、チームシティーは、内部の成果物を作成アクセスするために使用することができますパスのためのIDを作成し使用しています

:ビルドIDへのアクセス

/repository/download/BUILD_TYPE_EXT_ID/BUILD_ID:id/ARTIFACT_PATH 

は、実行時に困難になる可能性があり(つまりこの質問の理由)が、我々はまた、成果物

/repository/download/BUILD_TYPE_EXT_ID/BUILD_NUMBER/ARTIFACT_PATH 

そして、私の質問のビルド番号に示されるように

としてアクセスすることができますアクセスするためのビルド番号を使用することができます10
String BUILD_NUMBER= System.getenv("BUILD_NUMBER"); 

String BUILD_TYPE_EXT_ID = System.getenv("TEAMCITY_BUILDCONF_NAME"); 
0

チームシティービルドへのリンクではなくbuildIDのビルド番号を使用することができます。しかし、buildTypeIdも必要です(ビルド設定ページのURLで見ることができます)。

ようなリンクのサンプルです:

https://buildserver/viewLog.html?buildTypeId=Project_Trunk&buildNumber=46523

が、これは誰かに役立ちます願っています。

関連する問題