首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Docker代理构建管道,然后使用Jenkins本身

使用Docker代理构建管道,然后使用Jenkins本身
EN

Stack Overflow用户
提问于 2022-01-01 03:55:31
回答 2查看 214关注 0票数 0

我正在尝试设置一个Jenkinsfile,它首先在Docker映像中使用一个构建工具,该工具应该将一个jar文件留在工作区中,然后在该Docker映像之外,使用Jenkins Docker插件围绕该jar文件构建一个Docker映像,并将其发布到我的本地Docker repo。我的管道如下:

代码语言:javascript
复制
pipeline {
  agent any
  stages {
    stage('build') {
      agent {
        docker {
          image 'myrepo:5500/openjdk11_ant_buildenv'
        }

      }
      steps {
        sh 'ant'
      }
    }

    stage('Containerize') {
      agent any
      steps {
        script {
           withDockerRegistry([url: 'http://myrepo:5500']){
              def image = docker.build("myrepo:5500/myimagename", "--pull .");
              image.push()
           }
        }
    }
  }
}
}

我遇到的问题是,第二阶段似乎没有与第一阶段相同的工作区,因此jar文件不存在。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2022-01-01 04:26:51

有几件事你可以试试:

如果jar很小,则藏物解藏之间的jar文件

使用一个多级船坞建造,所以在第一阶段中运行ant步骤,然后将jar文件从第1阶段复制到第2阶段,然后执行在第2阶段中所做的工作来构建映像。这很好,因为您不依赖于您的ci工具--就像Jenkins一样,在开发它时迭代它仍然很痛苦。

票数 0
EN

Stack Overflow用户

发布于 2022-01-01 21:28:46

秘密似乎是向码头代理添加reuseNode true。这将阻止它为该阶段创建一个新的工作区,因此构建的工件将保留在容器阶段所需的位置。

‘’管道{代理任何阶段{阶段(‘构建’){代理{http://myrepo:5500‘){{映像’myrepo:5500/openjdk11 11_ agent‘reuseNode }}步骤{ sh 'ant’}}}阶段(‘Containerize’){ steps { script { withDockerRegistry(url:‘withDockerRegistry def映像=docker.build’)(“myrepo:5500/myimagename”,“--拉”);image.push(}}}‘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70546882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档