統合テストを行うために jenkins-workflow をセットアップしようとしています。統合テストは次のように機能します。
LibraryA
誰かがgit の機能ブランチに変更を加えました。jenkins に機能ブランチのコードに対して単体テストを実行させたいと考えています。次に、この機能ブランチのコードをclient1
and client2
(のユーザーであるLibraryA
) にインストールしてテストを実行したいと考えています。
の機能ブランチへの適切なコミットを取得することを除いて、すべてを実行するワークフローをセットアップすることができましたLibraryA
。代わりに、私のセットアップは、LibraryA
.
多くのフィーチャー ブランチがあるため、ワークフロー セットアップで特定のブランチをハードコーディングすることは適切ではありません。ワークフロー ジョブをトリガーするコミットのハッシュを取得する方法が必要なようです (SCM ポーリングを使用している場合でも)。
私のセットアップは次のようになります。
currentBuild.setDisplayName("#" + env.BUILD_NUMBER)
node {
git credentialsId: '033df7f1-7752-46bd-903d-8a70e613eed0', url: 'git@github.com:mycompany/myrepo.git'
sh '''
echo `git rev-parse HEAD` > libraryA_version.txt
sudo docker run --rm=true -e LANG=en_US.UTF-8 -a stdout -i -t mycompany/libraryA run_tests
'''
archive 'libraryA_version.txt'
}
def integration_jobs = [:]
integration_jobs[0]={
node{
ws {
unarchive mapping: ['libraryA_version.txt':'.']
sh 'sudo docker run -t --rm mycompany/client1:v1 bash run_tests.sh "`cat libraryA_version.txt`"'
}
}
}
integration_jobs[1] = {
node{
ws {
unarchive mapping: ['libraryA_version.txt' : '.']
sh 'sudo docker run -t --rm mycompany/client2 run_tests.sh "`cat libraryA_version.txt`" '
}
}
}
parallel integration_jobs
したがって、私の現在の質問は、最初のテストで実行する適切なコミットを取得するために git リポジトリ/ポーリングをセットアップする方法です。これlibraryA_version.txt
は後続のテストで使用されます。
または、このプロセスをまったく別の方法で行う必要がありますか?