【发布时间】:2019-09-20 17:09:11
【问题描述】:
我在 Jenkins 方面有一些经验,并且在过去一年中开始使用 Jenkinsfiles,但是,我遇到了一些我无法解释的事情(或者我可能只是在文档中还没有遇到它)。
我有一个 Jenkinsfile 作为多分支管道的一部分。在那个 Jenkinsfile 中,我基本上有这个:
pipeline {
agent any
stages {
stage('Checkout') {
checkout(...)
}
stage('Build') {
agent {
docker {
image 'maven:3-alpine'
args '...'
}
}
steps {
sh 'mvn -B clean package'
...
}
}
}
}
执行时,“构建”阶段会根据我在其中执行 Jenkinsfile 的分支拉下分支,并覆盖先前从“结帐”阶段(这是一个不同的分支)签出的分支。
现在,如果我在 Maven sh 命令之前将“Checkout”步骤移至“Build”阶段,它可以工作,但我注意到该阶段首先仍如上所述拉下分支,然后是“ Checkout" 步骤现在会覆盖该分支。
所以,我猜我错过了这个特定的“构建”阶段有一些特别之处,因为我之前在其他项目中使用过这种特殊的方法,唯一真正的区别是在其他项目中没有指定了代理并且它不是基于 Java 的(我认为这与它无关)。
任何见解都将不胜感激,因为我想不只是应用这个“解决方法”,而是把它做好。
提前致谢。
【问题讨论】:
标签: git jenkins jenkins-pipeline