这是一个示例Jenkinsfile
:
docker.image.inside() {
PWD = sh (
script: 'pwd',
returnStdout: true
).trim()
}
当我运行这个Jenkinsfile时,脚本在主机而不是容器上运行。我想在docker容器中运行它。
答案 0 :(得分:1)
pwd
将打印出与主机上的工作区相同的目录。这是因为Jenkins将工作空间作为bind mount安装到容器中的相同确切路径,然后使用--workdir
选项在该路径中运行命令。该目录在主机和容器之间共享,并且具有相同的名称。从this documentation开始,您仍会看到有关Docker管道插件的一些注释:
要使
inside()
起作用,Docker服务器和Jenkins代理必须使用相同的文件系统,以便可以安装工作区。
示例:如果您执行以下操作,您将看到命令在容器中执行,而不是在代理上执行。
docker.image('alpine:3.7').inside {
sh 'cat /etc/alpine-release'
}