具有并行步骤的Jenkins阶段在早期阶段的npm安装期间导致错误

时间:2017-11-12 14:10:10

标签: node.js jenkins jenkins-pipeline

我的项目中有以下基本Jenkins文件

   $('#element_id').draggable({axis: 'x,y',});

我根据图片pipeline { agent { docker { image 'node:6-alpine' args '-p 3000:3000' } } environment { CI = 'true' } stages { stage('Install') { steps { sh 'npm install' } } stage('Test') { steps { sh 'set -x' sh 'npm test' } } stage('Build') { steps { sh 'npm build' } } } }

在Docker容器中运行Jenkins

当我添加以下阶段时,构建在阶段jenkinsci/blueocean:latest

期间失败
Install

当我查看失败版本的控制台输出时,它表示没有名称为stage('Browser tests') { steps { parallel ( "Chrome" : { echo 'Chrome' }, "Firefox" : { echo 'Firefox' } ) } } 的目录或文件。

package.json

当我删除新添加的舞台时,提交并推送到repo并运行一个新的构建,一切正常。

我不明白为什么早期阶段失败,并且找不到scm中存在的package.json文件。在具有并行步骤的阶段中或在我的Jenkinsfile中是否存在导致此构建失败的错误?为什么它在早期阶段失败而不在entrypoint cat node:6-alpine [Pipeline] { [Pipeline] withEnv [Pipeline] { [Pipeline] stage [Pipeline] { (Install) [Pipeline] sh [jenkins-test-project_master-MDUNVJDQRLLKTJWSX7HRSYYITN7ZKZOU74225CDTDS4DUGOXVMIA] Running shell script + npm cache clean [Pipeline] sh [jenkins-test-project_master-MDUNVJDQRLLKTJWSX7HRSYYITN7ZKZOU74225CDTDS4DUGOXVMIA] Running shell script + npm install npm WARN enoent ENOENT: no such file or directory, open '/var/jenkins_home/workspace/jenkins-test-project_master-MDUNVJDQRLLKTJWSX7HRSYYITN7ZKZOU74225CDTDS4DUGOXVMIA/package.json'

1 个答案:

答案 0 :(得分:0)

并行阶段需要容器的两个实例。听起来您的情况是,SCM签出位于一个容器上,而Install阶段在另一个容器上执行。我建议在安装阶段的开始添加一个checkout scm步骤。

还请注意,并非两个并行容器都能够同时侦听主机上的端口3000。