我正在尝试设置 jenkins-workflow 来进行我们的集成测试。我们的集成测试是这样工作的:
LibraryA
有人在 git 的功能分支中进行了更改。我们希望 jenkins 对功能分支中的代码运行单元测试,然后我们希望将此功能分支中的代码安装到client1
和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 repo/polling 以获得正确的提交以在第一个测试中运行,这将libraryA_version.txt
在后续测试中使用?
或者,我应该以完全不同的方式进行此过程吗?