在我的一个阶段使用multibranch管道并运行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"。这不是主工作区,看起来它没有更新。我怎样才能使用我的主工作区?
答案 0 :(得分:0)
如果您的目标是在另一个容器中运行一个阶段,而不是使用代理,则只需执行以下操作:
stage("NPM Install") {
steps {
script {
docker.image("node:12.14.1-alpine").inside {
sh "npm install"
}
}
}
}
通过这种方式,詹金斯将挂载当前管道代理的相同工作空间。
答案 1 :(得分:0)
在 docker 代理选项中使用 reuseNode true
。
stage('run inside container') {
agent {
docker {
image "my/image"
reuseNode true
}
}
steps{
sh 'ls -l'
...
见Workspace synchronization
in the docs。
答案 2 :(得分:0)