在openshift中部署特定的标记图像



嗨,我正在开发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}标记映像。我正在研究管道中的回滚机制,在该机制中,我希望将特定的内部版本号映像部署到开发环境中。假设我的jenkins版本号是14,我想部署10,那么我如何将特定的标记图像部署到dev中。在openshift的图像中,我可以看到从1到14的所有标记图像。现在我想将特定的标记映像部署到dev中。这可能吗?

您可以使用要部署的映像的另一个版本(:最新(更改DeploymentConfig。您可以在de-web控制台中通过编辑部署来完成此操作,并从图像流jboss中选择另一个:标记。

或者使用oc补丁命令更改DC

oc-patch-dc--patch='{"spec":{"template":{"spec":{s"containers":[{"name":","image":"image name:tag"}]}}}}'

最新更新