【发布时间】:2018-11-29 13:51:12
【问题描述】:
您好,我正在开发 Openshift 3.9。下面是一段詹金斯管道代码
stage('Build Image') {
openshift.withCluster() {
openshift.withProject(env.DEV_PROJECT) {
def bcSelector = openshift.selector("bc", "jboss")
def bcExists = bcSelector.exists()
if (!bcExists) {
openshift.newBuild("--name=jboss", "--image-stream=jboss-eap70-openshift:1.5", "--binary=true")
} else {echo "The specified image already exists"}
}}
}
stage('Build Image with app') {
sh "rm -rf oc-build && mkdir -p oc-build/deployments"
sh "cp /var/lib/jenkins/jobs/devpipeline/jobs/devpipeline-tasks-pipeline/workspace/target/hello-1.0.war oc-build/deployments/ROOT.war"
openshift.withCluster() {
openshift.withProject(env.DEV_PROJECT) {
openshift.selector("bc", "jboss").startBuild("--from-dir=oc-build", "--wait=true")
}
}
}
stage('deploy to Dev') {
openshift.withCluster() {
openshift.withProject(env.DEV_PROJECT) {
if (openshift.selector('dc', 'jboss').exists()) {
openshift.selector('dc', 'jboss').delete()
openshift.selector('svc', 'jboss').delete()
openshift.selector('route', 'jboss').delete()
}
def app = openshift.newApp("jboss:latest")
app.narrow("svc").expose();
def dc = openshift.selector("dc", "jboss")
openshift.tag("${env.DEV_PROJECT}/jboss:latest", "${env.DEV_PROJECT}/jboss:${build_number}")
}
}
}
在Build 阶段,我正在使用 jboss 容器。在Build Image with app 阶段,我正在获取已构建的war 文件并使用war 文件构建jboss 的映像。在deploy to dev 我正在将应用程序映像部署到dev 并使用jenkins 内部版本号${env.DEV_PROJECT}/jboss:${build_number} 标记映像。我是在管道中处理回滚机制,我想在其中将特定的内部版本号映像部署到开发环境中。假设如果我的詹金斯内部版本号是 14 并且我想要部署 10,那么我如何将特定的标记图像部署到开发中。在 openshift 的图像中,我可以看到从 1 到 14 的所有标记图像。现在我想将特定的标记图像部署到开发中。有可能吗?
【问题讨论】:
标签: jenkins openshift jenkins-pipeline openshift-origin openshift-3