我的Jenkinsfile具有以下步骤:
stage('build') {
agent {
docker {
image 'maven:3-alpine'
args '-v /ec2-user/.m2:/root/.m2'
}
}
steps {
git(url: 'https://github.com/user/project.git', branch: 'master')
sh 'cp /home/application-prod.properties src/main/resources'
sh 'mvn clean install'
}
}
根据文档,詹金斯应该使用此图片在新创建的容器中执行此阶段的步骤。
如果是这样,那么为什么第二步的 sh 命令成功执行?它如何访问Jenkins主机上的文件?
在我看来,这些命令似乎在Jenkins主机上执行。那么为什么 mvn全新安装可以正常工作? Jenkins主机未安装Maven。
答案 0 :(得分:2)
因为在通常情况下,您要访问工作空间的内容,所以Jenkins会将其作为卷自动安装到容器中。否则,在大约99%的所有作业中,必须指定将签出的回购文件安装到容器中。
当发布-v
命令时,您应该能够在构建的输出中看到docker run
参数。