Hudsonとgitを使用しています。プロジェクトをコンパイルするビルド/テストサーバーがあり、展開する必要があるQAサーバーがあります。
現在ビルドされているgit commit shaを取得し、それを使用してQAサーバーに展開するための適切なコミットを取得します。
残念ながら、hudon gitプラグインは環境変数にgit commit shaを設定しないようです(svnプラグインがSVN_REVISIONで行うように)。どうすればこれを回避できますか?
私はハドソン初心者なので、ポインター/例は役に立ちます。
ありがとう
これは明らかに、現在のバージョンのgitプラグインでは不可能です。代わりに、現在のヘッドをファイルに書き込み、それをアーティファクトとして保存しています。後でカールして、特定のビルドに対応するコミットIDを取得できます。
ビルド後コマンドに追加しました:
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
おそらくかなり遅れていますが、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ブランチを解析できます。
Hudsonジョブに追加のステップを追加して、新しく作成したgitコミットをビルド/テストサーバーの2番目のリポジトリに公開できます。
2番目のレポジトリは、上記コミットをQAサーバーに自動的にプッシュする受信後フックを持つことができます。
余分な間接的なレイヤーが必要ない場合は、余分なステップに、HEADのSHA1を照会するgitコマンドが必要です:git describe
またはgit rev-parse
。
質問には他のgitオプションがあります。「 CVSのCVS_BRANCHタグと同様に、HudsonでビルドするときにGit SHA1を保存します。
Jenkinジョブでは、次のコマンドを使用できます
git describe --always
これにより、SHAの最初の7文字が返されます
よろしく
Jenkinsバージョン:2.46.2
Gitクライアント:2.4.5
次のGIT
変数は、env
から Shell
コマンドを実行することで使用できます。
したがって、それらをジョブの環境変数に戻すには、Word env
をScript Content
セクションに追加します...
Job > Configure > Build Environment > Inject environment variables to the build process > Script Content
実行可能なシェル内にはすでに優れたソリューションがあります。このソリューションには、ビルド後フェーズではなく、スクリプトを使用してビルドフェーズの一部として実行できるという利点があります。これについては以下で説明します。 https://stackoverflow.com/a/11837662/58424 を参照してください
実際、ビルドフォルダー内の../builds/$BUILD_NUMBER/changelog.xmlファイルを読み取り/解析することにより、ビルドフェーズが完了する前に情報にアクセスできます。このファイルは、ビルドまたはpost_buildフェーズの終わりではなく、SVN/GITコミットトリガーで作成されます。つまり、同じジョブのビルドフェーズの開始時にスクリプトを使用して解析し、env変数にデータを挿入できます。
SVN_REVISIONを使用する代わりに、$ GIT_COMMITを使用できます。 env $ GIT_COMMITは、Jenkinsを使用してGitから最新のコミットハッシュを取得します。