web-dev-qa-db-ja.com

ハドソンでは、現在のビルドのgit commit shaを取得するにはどうすればよいですか?

Hudsonとgitを使用しています。プロジェクトをコンパイルするビルド/テストサーバーがあり、展開する必要があるQAサーバーがあります。

現在ビルドされているgit commit shaを取得し、それを使用してQAサーバーに展開するための適切なコミットを取得します。

残念ながら、hudon gitプラグインは環境変数にgit commit shaを設定しないようです(svnプラグインがSVN_REVISIONで行うように)。どうすればこれを回避できますか?

私はハドソン初心者なので、ポインター/例は役に立ちます。

ありがとう

33

これは明らかに、現在のバージョンのgitプラグインでは不可能です。代わりに、現在のヘッドをファイルに書き込み、それをアーティファクトとして保存しています。後でカールして、特定のビルドに対応するコミットIDを取得できます。

2

ビルド後コマンドに追加しました:

env

ログには、すべての環境変数が見つかりました。それらのいくつかは次のとおりです。

BUILD_TAG=jenkins-Datagen-17
JOB_URL=http://jenkins:18080/job/Datagen/
USER=jenkins
GIT_COMMIT=ce9a3c1404e8c91be604088670e93434c4253f03
JENKINS_HOME=/var/lib/jenkins
JOB_NAME=Datagen
BUILD_ID=2011-06-22_15-26-06
GIT_BRANCH=master
EXECUTOR_NUMBER=0
NODE_LABELS=master
LOGNAME=jenkins
NODE_NAME=master
BUILD_NUMBER=17
53
Andrzej Jozwik

おそらくかなり遅れていますが、APIを使用してジェンキンスでこれを行うことができます:

https://jenkins-server/job/job-name/lastStableBuild/api/json

これにより、解析可能なJSONオブジェクトが得られます。 treeオプションを使用して、より正確なJSON文字列を取得することもできます。このようなもの:

https://jenkins-server/job/job-name/lastStableBuild/api/json?tree=actions[lastBuiltRevision[branch[*]]]

これで、awkを使用してSHA1およびgitブランチを解析できます。

4
Somaiah Kumbera

Hudsonジョブに追加のステップを追加して、新しく作成したgitコミットをビルド/テストサーバーの2番目のリポジトリに公開できます。
2番目のレポジトリは、上記コミットをQAサーバーに自動的にプッシュする受信後フックを持つことができます。

余分な間接的なレイヤーが必要ない場合は、余分なステップに、HEADのSHA1を照会するgitコマンドが必要です:git describeまたはgit rev-parse
質問には他のgitオプションがあります。「 CVSのCVS_BRANCHタグと同様に、HudsonでビルドするときにGit SHA1を保存します。

3
VonC

Jenkinジョブでは、次のコマンドを使用できます

git describe --always

これにより、SHAの最初の7文字が返されます

よろしく

3
Daniel Labonté

Jenkinsバージョン:2.46.2

Gitクライアント:2.4.5

次のGIT変数は、envから Shell コマンドを実行することで使用できます。

  • GIT_BRANCH
  • GIT_COMMIT
  • GIT_PREVIOUS_COMMIT
  • GIT_PREVIOUS_SUCCESSFUL_COMMIT
  • GIT_URL

したがって、それらをジョブの環境変数に戻すには、Word envScript Contentセクションに追加します...

tl; dr

Job > Configure > Build Environment > Inject environment variables to the build process > Script Content

Example

2
Nick Grealy

実行可能なシェル内にはすでに優れたソリューションがあります。このソリューションには、ビルド後フェーズではなく、スクリプトを使用してビルドフェーズの一部として実行できるという利点があります。これについては以下で説明します。 https://stackoverflow.com/a/11837662/58424 を参照してください

実際、ビルドフォルダー内の../builds/$BUILD_NUMBER/changelog.xmlファイルを読み取り/解析することにより、ビルドフェーズが完了する前に情報にアクセスできます。このファイルは、ビルドまたはpost_buildフェーズの終わりではなく、SVN/GITコミットトリガーで作成されます。つまり、同じジョブのビルドフェーズの開始時にスクリプトを使用して解析し、env変数にデータを挿入できます。

1
Joniale

SVN_REVISIONを使用する代わりに、$ GIT_COMMITを使用できます。 env $ GIT_COMMITは、Jenkinsを使用してGitから最新のコミットハッシュを取得します。

0
Dilip