docker - stash/unstash 将数据从构建容器传输到其他节点(在 jenkins 中)

标签 docker jenkins continuous-integration jenkins-pipeline devops

在我的 CI 基础设施中,我有一个 jenkins master 作为容器运行,还有 2 个从站 (vm)。 我尝试在节点上的 docker 容器内运行构建,因此在构建过程中,我将目标文件夹隐藏起来,以便稍后在其他节点上使用它。 在作业日志中,我可以看到该文件夹​​已成功隐藏。 当构建完成时,容器会自动销毁,然后在下一步中,我取消存储该文件夹以在单独的节点中实现另一个阶段,但什么也没有发生。似乎取消存储没有发生任何事情。

请问我如何将我的目标从容器转移到另一个节点甚至主节点???

这是我的管道代码:

node('docker') {
  stage('Checkout Code') {
      checkout scm
          }
  stage('Build') {
    withMaven( jdk: 'jdk_8', maven: 'maven 3') {
        mvn 'clean install'
        stash name: 'war', includes: 'x.war'
    }
  }

node('master') {
  stage('test') {
    withMaven( jdk: 'jdk_8', maven: 'maven 3') {
      unstash :	'war'
      sh 'mvn clean test'
    }
  }
 }
}

最佳答案

我怀疑 war 实际上是被隐藏的,因为生成的 war 不应该位于您执行mvn clean install的同一目录中。

我预计 war 将达到目标。您可能需要将 includes: 'x.war' 更改为 includes: 'target/x.war'。或者,转到安装了 war 的 Maven 存储库并从那里存储文件:

withMaven( jdk: 'jdk_8', maven: 'maven 3') {
  mvn 'clean install'
  dir('<path to war>'){
      stash name: 'war', includes: 'x.war'
  }
}

关于docker - stash/unstash 将数据从构建容器传输到其他节点(在 jenkins 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47371824/

相关文章:

continuous-integration - WiX 3.0 在持续集成执行时​​抛出错误 217

php - GitLab CI/CD-Nginx容器上的供应商目录

docker - docker如何将docker compose文件中的卷名映射到系统上的卷

wordpress - 每个暴露的端口都将重定向到8080,如何将容器端口映射到其他端口而不是8080?

docker - 具有深镜像名称的docker-compose构建挂起

Jenkins 库 : java. lang.NullPointerException:无法在空对象上调用方法 xxx

maven - 使用 Jenkins 和 Maven 获取唯一版本号

visual-studio - 如何在没有 VS 的情况下在持续集成中使用 MsTest?

Jenkins Artifactory Plugin (gradle) 不从 gradle.properties 读取版本

android-studio - jmockit与android studio下的gradle