Jenkins 运行并行脚本

标签 jenkins

我是 Jenkins 的新手,需要一些帮助..

我有 4 个 shell 脚本:test1.sh、test2.sh、test3.sh 和 test4.sh

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

我怎么能在 Jenkins 实现它?

我正在使用“使用 ssh 在远程主机上执行 shell 脚本”和“条件步骤(多个)”(只是探索)。我还设置了 key 以便与远程服务器通信。

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

谢谢!

最佳答案

首先,确保 test1.sh 和 test3.sh 在成功时返回标准成功代码 (0)。然后,在任何命令行(不仅仅是 Jenkins)中都可以使用的简单方法是使用以下命令行:

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

每对括号形成一个子shell,双与号表示“如果第一个成功则运行第二个”,单与号表示“在后台运行”。所以你得到相当于两个后台shell,每个运行两个脚本,如果第一个脚本不返回0,它将退出。

Jenkins 特定的解决方案是让一个节点具有两个(或更多)运行器。创建两个作业,并将两者都绑定(bind)到该节点。每个作业都运行一个 shell,test1.sh && test2.sh , 或 test3.sh && test4.sh .

关于Jenkins 运行并行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062933/

相关文章:

docker - Gradle 在 docker jenkins slave 中构建

git - repo 同步/Git 克隆仅从 Jenkins 的奴隶失败

ubuntu cli 中的 Firefox GLib-CRITICAL 错误

jenkins - 如何使用 jenkins 配置 aws 代码部署

jenkins - 在 Jenkins 中解析 HTML

android - 未生成 Crashlytics 映射文件

jenkins - 为什么在 Jenkinsfile 的 DSL 闭包中使用 `this` 或 `env` 时需要关键字 `param`

c++ - 使用CPPCHECK的Red Hat Enterprise Linux(RHEL)上的C++宏问题

docker - 如何配置动态配置的 Docker 代理

git - 通过 Jenkins 标记 GitHub 项目