在 Jenkinsfile 中使用 Dockerfile 创建的 docker 容器内运行命令

san*_*tel 4 jenkins docker jenkins-pipeline

我创建了一个 Jenkins 管道文件并创建了一个 Jenkinsfile。在 Jenkinsfile 中,我使用了 Dockerfile 代理,然后运行了一些步骤。这些步骤应该在 docker 内部运行,但它们却在主机上运行。密码是她的。

#!/usr/bin/env groovy
@Library(['abc-jenkins','xyz-jenkins-library']) _
pipeline {
agent {
    dockerfile{
        dir 'TEST'
        filename 'dockerfile'
        label 'docker'
    }
}
stages {
    stage('Build Stage') {
        steps {
            echo 'testing stage running'
            sh "ls"
        }
    }
}   
}
Run Code Online (Sandbox Code Playgroud)

yon*_*ong 6

根据 的输出,您误解了它ls

对于 Jenkins pipeline docker DSL,它将把 jenkins 作业工作区挂载到 docker 容器,并将 docker 更改WORKDIR为 jenkins 作业工作区。

因此,当您在容器内执行时ls,它将打印 jenkins 作业工作空间下的文件和 fodler。

您可以尝试ls主机中不存在的其他cmd或其他文件夹,以确认它确实在容器而不是主机内执行。