jenkins复杂的buildflow,这是可能的吗?

kuarbcqp  于 2024-01-07  发布在  Jenkins
关注(0)|答案(2)|浏览(262)

x1c 0d1x的数据
我想有一个Jenkins构建流程,看起来像这样。

  • 在触发构建之后,所有从机并行运行相同的作业(设置作业)。
  • 如果任何奴隶失败了这项工作,他们不应该继续下去。
  • 对于所有通过该作业的从机,它们应该从需要完成的作业池中抓取一个作业。一旦从机完成一个作业,它们应该返回完成池中的另一个作业。

我几个星期前才开始使用Jenkins,他们现在设置它的方式是,每个作业都由一个从站来完成,他们必须首先运行安装作业。这真的减慢了构建时间,因为我有大约30个作业,安装需要大约2分钟。
我使用Jenkins作为自动化测试平台,作业池中的所有作业都可以独立运行。我目前有5个从站和~30个作业。

ruoxqz4g

ruoxqz4g1#

下面的代码应该可以做到这一点:

  1. def jobPool = new ArrayDeque()
  2. jobPool.add({
  3. echo "Doing stuff on ${env.NODE_NAME}"
  4. });
  5. jobPool.add({
  6. echo "Doing other stuff on ${env.NODE_NAME}, a little slower"
  7. sleep 4
  8. });
  9. jobPool.add({
  10. echo "Doing more stuff on ${env.NODE_NAME}, even slower"
  11. sleep 10
  12. });
  13. jobPool.add({
  14. echo "Doing stuff quick on ${env.NODE_NAME}"
  15. });
  16. jobPool.add({
  17. echo "Doing stuff quicker on ${env.NODE_NAME}"
  18. });
  19. def par = [:]
  20. for (x in ["master", "urban"]) {
  21. def nodeName = x; // needed due to variable scoping
  22. par[nodeName] = {
  23. node (nodeName) {
  24. try {
  25. echo "Doing setup on ${env.NODE_NAME}!"
  26. // Do you're setup
  27. echo "Done with setup"
  28. } catch (Exception e) {
  29. echo "Will not use this node as it failed setup!"
  30. return;
  31. }
  32. while (true) {
  33. // echo "${jobPool.size()}"
  34. def subTask = jobPool.poll()
  35. //echo "${jobPool.size()} ${subTask}"
  36. if (subTask == null) {
  37. break;
  38. }
  39. // Might wan't try catch around the next line if you wan't to continue if a job fails
  40. subTask()
  41. }
  42. }
  43. }
  44. }
  45. parallel par
  46. if (!jobPool.isEmpty()) {
  47. error "Not all tasks was done!"
  48. }

字符串
只需将“作业池作业”添加到jobPool变量并修改设置部分。

展开查看全部
1l5u6lss

1l5u6lss2#

看起来你想在同一个工作中有不同的阶段。这在jenkins 2的管道中变得容易多了。这里有一些图片:https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Stage+View+Plugin
[groovy]代码最终看起来像这样:

  1. node {
  2. stage 'Checkout'
  3. svn 'https://svn.mycorp/trunk/'
  4. stage 'Build'
  5. sh 'make all'
  6. stage 'Test'
  7. sh 'make test'
  8. }

字符串

相关问题