gri*_*gon 6 maven jenkins jenkins-pipeline
我正在为Maven项目开发多分支管道。我正在尝试遵循Jenkins文档所引用的标准CI步骤,即构建,测试和部署。但是,maven在将这些步骤视为谨慎的步骤时似乎并不很好。
到目前为止,我有:
stages {
stage('Test') {
steps {
sh "mvn -B clean verify"
}
}
stage('Deploy') {
when {
branch 'master'
}
steps {
sh "mvn -B deploy"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,完整版本将运行两次,一次在Test阶段中,一次在Deploy阶段中。不好意思,这要感谢Google Web Toolkit,因为它很耗时,但是这是一个单独的问题。
有没有一种方法可以优雅地跳过Deploy阶段中较早的Maven生命周期步骤并跳至部署目标?
我能想到的唯一其他选择是
stages {
stage('Test') {
when {
// Some expression that states "not master"
}
steps {
sh "mvn -B clean verify"
}
}
stage('Test-and-Deploy') {
when {
branch 'master'
}
steps {
sh "mvn -B deploy"
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于Jenkins UI中的呈现方式,我对此都不满意,并且将Jenkins文档中暗示的将三个阶段压缩为一个阶段是一件很奇怪的事情。我认为这是次要的邪恶,所以除非我能找到更好的东西,否则我可能会坚持下去。
这是部分答案。
通常,构建中最耗时的部分是运行测试。对于许多项目来说,跳过该部分已经足以将构建时间缩短到可接受的程度。
在 Maven 中,您可以跳过单元测试的执行(由Surefire 插件完成),如下所示:
mvn deploy -B -DskipTests
Run Code Online (Sandbox Code Playgroud)
如果您的项目有交互测试(由Failsafe Plugin执行),您也可以跳过这些测试:
mvn deploy -B -DskipTests -DskipITs
Run Code Online (Sandbox Code Playgroud)