Jenkins运行并行脚本

wqlqzqxt  于 2022-10-06  发布在  Jenkins
关注(0)|答案(2)|浏览(276)

我是新来的Jenkins,需要一些帮助。

我有4个外壳脚本:test1.sh、test2.sh、test3.sh和est4.sh

我希望仅当test1.sh成功运行时才运行test2.sh,而仅当test3.sh成功运行时才运行test4.sh。我还希望est1.sh和est3.sh并行运行。

在Jenkins,我如何才能做到这一点?

我使用的是“使用ssh在远程主机上执行外壳脚本”和“条件步骤(多个)”(只是浏览)。我还设置了密钥,以便与远程服务器通信。

使用屏幕截图或其他方式的插图将是有帮助的。

谢谢!

qnyhuwrf

qnyhuwrf1#

首先,确保test1.sh和est3.sh在成功时返回标准成功代码(0)。然后,简单的方法是使用下面的命令行,它适用于任何命令行,而不仅仅是Jenkins:

((test1.sh && test2.sh) &) ; ((test3.sh && test4.sh) &)

每对括号构成一个子壳,双安培的意思是“如果第一次成功,就跑第二次”,而单与号的意思是“在后方奔跑”。因此,您得到的等同于两个后台外壳,每个外壳运行两个脚本,如果第一个脚本没有返回0,则退出。

特定于Jenkins的解决方案是拥有一个具有两个(或更多)Runner的节点。创建两个作业,并将两个作业都绑定到该节点。每个作业都运行一个外壳程序,即test1.sh && test2.shtest3.sh && test4.sh

yyhrrdl8

yyhrrdl82#

在Jenkins声明性或脚本化管道中,您可以为每个外壳脚本或任何其他您喜欢的命令或程序执行创建并行执行。

stage('run-parallel-branches') {
  steps {
    parallel(
      a: {
        echo "This is branch a"
      },
      b: {
        echo "This is branch b"
      }
    )
  }
}

参考文献:https://www.jenkins.io/blog/2017/09/25/declarative-1/

相关问题