【问题标题】:Deploying specific tagged image in openshift在 openshift 中部署特定的标记图像
【发布时间】: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


    【解决方案1】:

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

    或者用 oc patch 命令来改变 DC

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多