带有docker和git的詹金斯声明性管道

问题描述 投票:0回答:1

我正在尝试使用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轮询,然后...

jenkins continuous-integration jenkins-pipeline devops continuous-delivery
1个回答
0
投票

添加

© www.soinside.com 2019 - 2024. All rights reserved.