我创建了一个 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"
}
}
}
}
最佳答案
你是根据ls
的输出误会了.
对于 Jenkins 管道 docker DSL,它将 jenkins 作业工作区挂载到 docker 容器并更改 docker WORKDIR
到 Jenkins 工作区。
因此,当您执行 ls
时在容器内,它将在您的 jenkins 作业工作区下打印文件和文件。
您可以尝试其他 cmd 或 ls
主机中不存在的其他文件夹来批准它实际上是在容器内而不是主机内执行的。
关于docker - 在 Jenkinsfile 中使用 Dockerfile 创建的 docker 容器内运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55486231/