从Jenkinsfile在docker容器中运行sh脚本

时间:2018-01-28 13:51:03

标签: jenkins jenkins-pipeline

这是一个示例Jenkinsfile

docker.image.inside() {
  PWD = sh (
    script: 'pwd',
    returnStdout: true
  ).trim()
}

当我运行这个Jenkinsfile时,脚本在主机而不是容器上运行。我想在docker容器中运行它。

1 个答案:

答案 0 :(得分:1)

pwd将打印出与主机上的工作区相同的目录。这是因为Jenkins将工作空间作为bind mount安装到容器中的相同确切路径,然后使用--workdir选项在该路径中运行命令。该目录在主机和容器之间共享,并且具有相同的名称。从this documentation开始,您仍会看到有关Docker管道插件的一些注释:

  

要使inside()起作用,Docker服务器和Jenkins代理必须使用相同的文件系统,以便可以安装工作区。

示例:如果您执行以下操作,您将看到命令在容器中执行,而不是在代理上执行。

docker.image('alpine:3.7').inside {
  sh 'cat /etc/alpine-release'
}
相关问题