Rob*_*ert 5 git jenkins jenkins-workflow
我正在尝试设置jenkins-workflow来进行集成测试.我们的集成测试工作方式如下:
有人LibraryA在git的功能分支中进行了更改.我们希望詹金斯在其上运行的特性分支的代码单元测试,那么我们想从这个特性分支安装代码转换成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
Run Code Online (Sandbox Code Playgroud)
所以,我目前的问题是如何设置git repo/polling以获得在第一次测试中运行的正确提交,这将libraryA_version.txt在后续测试中使用?
或者,我应该以完全不同的方式进行这个过程吗?
您正在寻找的功能是“按分支构建”,在我看来,它应该通过适合用途的插件来相应地实现。
分支是在 git 中完成的。
Jenkins 必须复制构建或构建管道作业以适合分支并能够构建和测试分支。
重新集成后,git 必须通知 Jenkins,而 Jenkins 必须关闭作业。
我找到了这个插件:
https://wiki.jenkins-ci.org/display/JENKINS/Multi-Branch+Project+Plugin
这个插件/教程:
http://entagen.github.io/jenkins-build-per-branch/
实施很大程度上取决于您的场景,因此我无法更具体。我只是说挑战是:
构建可以并发且独立运行的 Jenkins 作业。
使用 Jenkins 作业的模板。
处理 Jenkins 和 git 之间的事件。
在你的情况下:
将整个流程构建为从前端到后端的交付管道。
如果有人分支一个步骤并实现一个功能,则复制整个管道并运行整个管道。
让它发挥作用然后改进。
| 归档时间: |
|
| 查看次数: |
8183 次 |
| 最近记录: |