我正在尝试使用git和dockers为Node JS应用程序构建管道。我制作了声明性的Jenkinsfile,使一切都能顺利进行。我已经将SCM轮询设置为每两分钟一次,并且可以正确调用它,但是问题是由于旧管道仍在运行,因此新轮询将与消息等待下一个可用执行者]排队。我想知道我是否正确地完成了所有工作以及缺少的内容。
可以找到我的完整代码here。
我尝试使用&
在deliver.sh文件中制作npm start,使其在守护程序模式下运行,并使用Jenkinsfile中的input message选项阻止管道从否则,仅使用“ npm start&”完成,而没有“ input message”,则管道到达管道的末尾,并且创建的应用容器被杀死。我确信这种方法是不正确的。然后,使用npm start而不使用&和wihtout input message和scm poll进行操作,并且管道也开始执行阶段,但是由于最后一个容器已经发布到端口3000,所以显然我赢了不会将新版本发布到3000,因此管道返回错误。Dockerfile
FROM node:alpine COPY . . EXPOSE 3000
[Jenkinsfile
pipeline { triggers { pollSCM 'H/2 * * * *' } agent { dockerfile { args '-p 3000:3000' } } stages { stage('Build') { steps { sh 'npm install' } } stage('Deliver') { steps { sh './jenkins/scripts/deliver.sh' // input message: 'Finished using the web site? (Click "Proceed" to continue)' // sh './jenkins/scripts/kill.sh' } } } }
deliver.sh脚本
# set -x # npm start & npm start # sleep 1 # copying process ID of npm start to file name pidfile, this id will # be used when the user press any key to stop the app # echo $! > .pidfile # set +x
在这方面的任何帮助将不胜感激。
我正在尝试使用git和dockers为Node JS应用程序构建管道。我制作了声明性的Jenkinsfile,使一切都能顺利进行。我每两分钟设置一次SCM轮询,然后...
添加