【问题标题】:Run Jenkins Pipeline Tests Inside Docker Container在 Docker 容器中运行 Jenkins 流水线测试
【发布时间】:2018-02-08 05:11:46
【问题描述】:

我正在尝试在我拥有的 docker 容器内(或针对)运行我的管道测试。我最初使用 Dockerfile 来创建容器,但测试总是针对执行作业的 jenkins 节点运行。我修改了我的 jenkinsfile 以使用标准的东西,但仍然没有得到我期望的结果。

我最终想要完成的是:

  1. 抛出一个 docker 容器
  2. 将我的源代码复制到容器中
  3. 在容器上运行我的 python 脚本

我有 1 和 2 工作,但没有 3。现在,如果我可以针对容器运行测试,我会很高兴,这就是我修改 Jenkinsfile 以使其更简单的原因。

我的 Jenkins 文件:

pipeline {
    agent {
        docker { image 'node:7-alpine' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'pwd'
                sh 'ls -al'
            }
        }
    }
}

当我在本地运行 docker run node:7-alpine pwddocker run node:7-alpine ls -al 时,我得到以下信息:

/

bin
dev
etc
home
lib
linuxrc
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

但在詹金斯我得到:

[test_job] Running shell script
+ pwd
/srv/jenkins/workspace/test_job

[test_job] Running shell script
+ ls -al
total 36
drwxr-x---    4 5003     5003          4096 Aug 29 20:44 .
drwxr-xr-x    4 root     root          4096 Aug 29 20:44 ..
drwxr-x---    8 5003     5003          4096 Aug 29 20:44 .git
-rw-r-----    1 5003     5003          1184 Aug 29 19:24 .gitignore
-rw-r-----    1 5003     5003           802 Aug 29 19:47 Dockerfile
-rw-r-----    1 5003     5003           247 Aug 29 20:44 Jenkinsfile
-rw-r-----    1 5003     5003           417 Aug 29 20:24 OriginalJenkinsfile
-rw-r-----    1 5003     5003          2534 Aug 29 19:24 README.md
drwxr-x---    5 5003     5003          4096 Aug 29 19:24 framework

【问题讨论】:

    标签: dockerfile jenkins-pipeline


    【解决方案1】:

    据我所知,这些命令将 jenkins 中的当前目录挂载到容器中并将其设置为 workdir。还有一个bug,你不能在容器内切换目录。

    尝试 ls / 它应该列出该容器根目录中的所有内容

    【讨论】:

    • 我正在使用 docker 管道插件,我的代码实际上是这里提到的第一个示例:jenkins.io/doc/book/pipeline/docker - 但测试步骤没有按描述工作。
    • 看看我编辑的答案。您希望 ls docker 容器的根目录。但是您实际上列出了已安装目录的内容。试试'ls /'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多