我可以在Jenkins中使用脚本化管道指定节点吗?

时间:2019-03-19 02:00:27

标签: jenkins jenkins-pipeline

我已经注意到Jenkins管道文件-Jenkinsfile具有两种语法

  • 声明性
  • 脚本化

我已经完成了声明式脚本的工作,以指定运行任务的节点。但是我不知道如何将脚本修改为脚本语法。

我的声明性脚本

pipeline {
    agent none

    stages {
        stage('Build') {
            agent { label 'my-label​' }
            steps {
                echo 'Building..'
                sh '''

                '''
            }
        }
        stage('Test') {
            agent { label 'my-label​' }
            steps {
                echo 'Testing..'
                sh '''

                '''
            }
        }
        stage('Deploy') {
            agent { label 'my-label​' }
            steps {
                echo 'Deploying....'
                sh '''

                '''
            }
        }
    }
}

我尝试以这种方式使用:

node('my-label') {
  stage 'SCM'
  git xxxx

  stage 'Build'
  sh ''' '''
}

但是Jenkins似乎找不到要运行的节点。

1 个答案:

答案 0 :(得分:0)

这个简单的例子怎么样?

stage("one") {
    node("linux") {
        echo "One"
    }
}
stage("two") {
    node("linux") {
        echo "two"
    }
}
stage("three") {
    node("linux") {
        echo "three"
    }
}

或下面的答案,这样,如果有多个带有相同标签的节点并被另一个作业中断,则可以确保这些阶段在同一节点上运行。 上面的示例将在每个阶段之后释放节点,下面的示例将保留所有三个阶段的节点。

node("linux") {
    stage("one") {
        echo "One"
    }
    stage("two") {
        echo "two"
    }
    stage("three") {
        echo "three"
    }
}