jenkins docker 代理和工作区

red*_*888 5 jenkins jenkins-plugins jenkins-pipeline

使用多分支管道并在我的一个阶段中运行 docker 代理,我发现容器内的工作区没有更新:

stage('run inside container') {
     agent {
         docker {
             image "my/image"}}
    steps{
       sh 'ls -l'
       ...
Run Code Online (Sandbox Code Playgroud)

所以我发现 jenkins 正在运行这个 docker 命令:

docker run -t -d -u 1000:1000 -u root -w /home/jenkins/workspace/myworkspace@2
Run Code Online (Sandbox Code Playgroud)

它安装了工作空间,但带有“2”。这不是主工作区,看起来没有更新。我怎样才能让它使用我的主工作区?

Owe*_*ash 3

如果您的目标是在另一个容器内运行阶段,则无需使用代理,只需执行以下操作:

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"
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

这样 Jenkins 就会将当前的管道工作空间与容器绑定挂载。