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

时间:2018-11-29 13:51:12

标签: jenkins openshift jenkins-pipeline openshift-origin openshift-3

嗨,我正在研究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阶段,iam采取jboss容器。在Build Image with app阶段,我将获取构建的war文件,并使用war文件构建jboss的映像。在deploy to dev中,我将应用程序映像部署到dev中,并使用jenkins内部版本号{{ 1}}。我正在研究管道中的回滚机制,其中我想将特定的内部版本号映像部署到开发环境中。假设我的詹金斯内部版本号是14,并且我想部署10,那么我该如何将特定的标记图像部署到dev中。在openshift的图像中,我可以看到从1到14的所有标记图像。现在,我想将特定的标记图像部署到dev中。有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以做的是,将DeploymentConfig更改为要部署的映像的另一个版本(:latest)。您可以在Web控制台中使用EDIT部署来执行此操作,然后从图像流jboss中选择另一个:tag。

或使用oc patch命令更改DC

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