我有以下多分支管道架构的Jenkins文件
#!/usr/bin/groovy
pipeline {
agent {
node {
label 'ubuntu'
customWorkspace "/src/$BUILD_NUMBER"
}
}
environment {
SRC_DIR = "$WORKSPACE"
BUILD_DIR="/build/$BUILD_NUMBER"
}
stages {
stage('Build') {
steps {
dir(BUILD_DIR) {
sh '$SRC_DIR/build.sh'
}
}
}
stage('Test') {
steps {
dir(BUILD_DIR) {
sh '$SRC_DIR/test.sh'
}
}
}
}
}
我试图在Ubuntu和Red Hat节点上并行运行'Build'阶段,而只在Ubuntu节点上运行'Test'阶段。
任何人都可以帮我指定如何选择在哪个节点上运行哪个阶段。我在网上找到了一些解决方案,但他们建议重写构建阶段两次:一次用于Red Hat节点,另一次用于Ubuntu节点。没有代码重复,有没有办法做到这一点?
非常感谢
答案 0 :(得分:4)
当然,你想要以某种方式标记你的从属节点。基本上配置Jenkins上的所有节点并为它们提供有意义的名称。
stage('Build') {
steps {
node('os_linux') {
sh './build.sh'
}
node('os_redhat') {
sh './build.sh'
}
}
这将以串行方式运行任务,Jenkinsfile语法还支持在不同节点上并行执行命令。
谢谢,
答案 1 :(得分:0)
参加聚会有点晚,但仍然... 您可以使用 script {} ,以便创建所需的标签。 像这样:
stage('Build') {
steps {
script {
dev label = 'RHEL'
if (env.ENV == 'ubuntu') {
label = 'Ubuntu'
}
node("${label}") {
dir(BUILD_DIR) {
sh '$SRC_DIR/build.sh'
}
}
}
}
}