Ошибка копирования файлов Jenkins после сборки docker npm

#jenkins-pipeline

#дженкинс-конвейер

Вопрос:

У меня есть сценарий, похожий на этот:

 pipeline {
    agent {
        docker {
            label 'dev' 
            image 'node:12-alpine' 
            args '-p 3000:3000' 
        }
    }
    environment {
        HOME = '.'
    }    
    stages {
        stage('clone repo') {
            steps {
                git(
                    url: '...',
                    credentialsId: '...',
                    branch: 'master'
                )
            }
        }
        stage('install dependency packages') { 
            steps {
                sh 'npm install'
            }
        }
        stage('build prod ready enviroment') { 
            steps {
                sh 'npm run build'
            }
        }
        stage('deploy') {
            agent { node { label 'dev' } }
            steps {
                sh "cp -rf ./build/* /opt/www_folder/"
            }
        }
    }
}
  

Теперь все работает нормально, кроме этапа развертывания, который просто зависает в процессе сборки. Если я запускаю только последний этап (развертывание) отдельно без других этапов, он работает нормально. Я думаю, что существует конфликт с агентом docker, но я не знаю, как это исправить.

Ответ №1:

Я не уверен, что это лучший ответ, но мне удалось решить мою проблему с помощью этого скрипта:

 pipeline {
    agent none
    environment {
        HOME = '.'
    }    
    stages {
        stage('clone repo') {
            agent { node { label 'dev' } }
            steps {
                git(
                    url: '...',
                    credentialsId: '...',
                    branch: 'master'
                )
            }
        }
        stage('install and build') { 
            agent {
                docker {
                    label 'dev' 
                    image 'node:12-alpine' 
                    args '-p 3000:3000' 
                }
            }
            steps {
                sh 'npm install'
                sh 'npm run build'
            }
        }
        stage('deploy') {
            agent { node { label 'dev' } }
            steps {
                sh "rm -rf /opt/www_folder/*"
                sh "cp -rf ./build/* /opt/www_folder/"
            }
        }
    }
}