首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jenkins docker代理和工作区

jenkins docker代理和工作区
EN

Stack Overflow用户
提问于 2018-02-01 08:16:45
回答 3查看 3.3K关注 0票数 3

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

代码语言:javascript
复制
stage('run inside container') {
     agent {
         docker {
             image "my/image"}}
    steps{
       sh 'ls -l'
       ...

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

代码语言:javascript
复制
docker run -t -d -u 1000:1000 -u root -w /home/jenkins/workspace/myworkspace@2

它挂载工作区,但带有一个"2“。这不是主工作区,它看起来没有更新。如何让它使用我的主工作区?

EN

回答 3

Stack Overflow用户

发布于 2020-07-21 17:28:56

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

代码语言:javascript
复制
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将绑定、挂载当前的管道工作空间和容器。

票数 3
EN

Stack Overflow用户

发布于 2021-06-13 20:43:41

在docker代理选项中使用reuseNode true

代码语言:javascript
复制
stage('run inside container') {
     agent {
         docker {
             image "my/image"
             reuseNode true
         }
    }
    steps{
       sh 'ls -l'
       ...

参见Workspace synchronization in the docs

票数 0
EN

Stack Overflow用户

发布于 2021-06-14 15:13:26

Jenkins使用myworkspace@2或@3为用户创建新的工作区,如果多个构建被并行触发。这是为了确保两个作业不会互相覆盖。

如果您的要求是一次只运行一个作业,您可以为您的作业启用“不允许并发构建”,如下图所示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48553533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档