使用多分支管道并在我的一个阶段中运行docker代理,我发现容器内的工作区没有更新:
stage('run inside container') {
agent {
docker {
image "my/image"}}
steps{
sh 'ls -l'
...所以我发现jenkins正在运行这个docker命令:
docker run -t -d -u 1000:1000 -u root -w /home/jenkins/workspace/myworkspace@2它挂载工作区,但带有一个"2“。这不是主工作区,它看起来没有更新。如何让它使用我的主工作区?
发布于 2020-07-21 17:28:56
如果您的目标是在另一个容器中运行阶段,则不使用代理,只需执行以下操作:
stage("NPM Install") {
steps {
script {
// this will generate node_modules folder and map it
// back to this workspace.
docker.image("node:12.14.1-alpine").inside {
sh "npm install"
}
}
}
}这样,Jenkins将绑定、挂载当前的管道工作空间和容器。
发布于 2021-06-13 20:43:41
在docker代理选项中使用reuseNode true。
stage('run inside container') {
agent {
docker {
image "my/image"
reuseNode true
}
}
steps{
sh 'ls -l'
...参见Workspace synchronization in the docs。
发布于 2021-06-14 15:13:26
Jenkins使用myworkspace@2或@3为用户创建新的工作区,如果多个构建被并行触发。这是为了确保两个作业不会互相覆盖。
如果您的要求是一次只运行一个作业,您可以为您的作业启用“不允许并发构建”,如下图所示。

https://stackoverflow.com/questions/48553533
复制相似问题