У меня сейчас проблема. Я устанавливаю конвейер сборки для openshift, используя jenkins.
Теперь моя проблема заключается в следующем. 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'
}
}
}
}