我目前有问题。我正在使用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'
}
}
}
}