我正在尝试设置jenkins-workflow来进行我们的集成测试。我们的集成测试如下所示:
某人在git的功能分支中更改LibraryA。我们希望jenkins对功能分支中的代码运行单元测试,然后将此功能分支的代码安装到client1和client2(它们是LibraryA的用户)并运行其测试。
我能够设置工作流来完成所有操作,除了获取LibraryA功能分支的正确提交。相反,我的设置只会从LibraryA的某个(看似随机的)分支中拉取提交。
由于我们有很多功能分支,因此在工作流设置中硬编码特定分支似乎不合适。似乎应该有一种方法可以获取触发工作流作业的提交哈希(即使使用SCM轮询)。
我的设置如下:
某人在git的功能分支中更改LibraryA。我们希望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
?
或者,我应该完全以不同的方式进行这个过程吗?
/git/notifyCommit
webhook),最好将@daily
/@hourly
添加到计划中以捕获任何杂散提交。同样,使用即将推出的多分支工作流程,所有这些都变得更加容易:每个分支都有自己的子项目,并且可以使用符号“checkout scm”≥1次来获取匹配的检出。 - Jesse Glickbranch: "production"
命名法。 - MarkHu