Глобально объявить и повторно использовать узел в Jenkinsfile - PullRequest
0 голосов
/ 16 апреля 2020

Есть ли способ повторно использовать узел на разных этапах без копирования / вставки агента каждый раз? У меня ниже агент docker на 5 моих этапах, он делает файл довольно большим.

pipeline {
    agent {
        node {
            label 'centos'
        }
    }
    stages {
        stage('3rd party Scan') {
            when {
                beforeAgent true
                allOf {
                    triggeredBy 'TimerTrigger'
                    branch 'master'
                }
            }
            agent {
                docker {
                    reuseNode true
                    image NODE_DOCKER_IMAGE
                    args '-u root'
                }
            }
            steps {
                script {
                   sh 'npm ci'
                   scan.run_scan();
                }
            }
        }

        stage('Install') {
            when {
                beforeAgent true
                not { expression { ... } }
            }

            agent {
                docker {
                    reuseNode true
                    image NODE_DOCKER_IMAGE
                    args '-u root'
                }
            }

            steps {
                sh 'git clean -fxd'
                sh 'npm ci'
            }
        }

        stage('Version') {
            agent {
                docker {
                    reuseNode true
                    image NODE_DOCKER_IMAGE
                    args '-u root'
                }
            }

            steps {...
            }
        }
    }
}

1 Ответ

1 голос
/ 16 апреля 2020

Предложение stages действует в stage, поэтому это может работать:

pipeline {
    agent {
        node {
            label 'centos'
        }
    }
    stages {
      stage('All Docker Stages') {
       agent {
           docker {
               image NODE_DOCKER_IMAGE
               args '-u root'
           }
       }
       stages {
          stage('3rd party Scan') {
            when {
                beforeAgent true
                allOf {
                    triggeredBy 'TimerTrigger'
                    branch 'master'
                }
            }
            steps {
                script {
                   sh 'npm ci'
                   scan.run_scan();
                }
            }
        }

        stage('Install') {
            when {
                beforeAgent true
                not { expression { ... } }
            }
            steps {
                sh 'git clean -fxd'
                sh 'npm ci'
            }
        }

        stage('Version') {
            steps {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...