在我的 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/