Openshift Jenkins构建管道-等待构建完成

时间:2019-01-17 09:42:54

标签: jenkins openshift build-pipeline

我目前有问题。我正在使用jenkins建立到openshift的构建管道。

现在我的问题是这个。 Openshift将在我的构建实际完成之前开始部署。我真的不希望使用某种固定的超时时间来启动部署,因为如果构建花费更长的时间,这可能会导致错误,或者如果构建速度更快,则会浪费时间。

有没有办法让詹金斯在进入下一阶段之前等待构建完成?

到目前为止,我的管道如下所示。我也欢迎其他解决方案。

Jenkinsfile

pipeline {
    agent any
    stages {
        stage('Prerequisites'){
            steps {
                sh 'node --version'
                sh 'npm cache verify'
                sh "npm config set strict-ssl false"
                sh "npm config set registry https://private.registry/repository/npm-registry/"
                sh "npm config set proxy http://user:pw@proxy.int:port/"
                sh "npm config set https-proxy http://http://user:pw@proxy.int:port/"
                sh "npm config set no_proxy=private.registry"
            }
        }
        stage('Build'){
            steps {
                sh 'npm install'
                sh 'npm run tsc -v'                
                sh 'npm run tsc -- --p ./tsconfig-prod.json' 
            }
        }

        stage('Unit Testing'){
            steps {
                sh 'npm test'
            }
        }

        stage('Login to OpenShift'){
            steps {
                sh 'oc login https://openshift.cluster -u user -p pw'
                sh 'oc project my-project'
            }
        }

        stage('Build on INT'){
            steps {          
                sh 'oc replace -f ./openshift/is.yaml || oc create -f ./openshift/is.yaml'
                sh 'oc replace -f ./openshift/build.yaml || oc create -f ./openshift/build.yaml'
                sh 'oc start-build my-app'

            }            
        }

        stage('Deploy on INT'){
            steps {
                echo 'Deploying on INT'
                sh 'oc replace -f ./openshift/deploy.yaml || oc create -f ./openshift/deploy.yaml'
            }
        }

        stage('Creating Service and Route'){
            steps {
                sh 'oc replace -f ./openshift/service.yaml || oc create -f ./openshift/service.yaml'
                sh 'oc replace -f ./openshift/route.yaml  || oc create -f ./openshift/route.yaml'
            }
        }
    }
}

0 个答案:

没有答案