jenkins - Declare configFileProvider only once in JenkinsFile and reference from all stages
问题描述
I am trying to set up scripted JenkinsFile for our pipeline automation and would like to use configFileProvider for maven. As such i end up defining this block in all maven stages within the scripted JenkinsFile. Is there a way to define it just once in the script and reference it across all stages. My sample JenkinsFile as of now looks something like this :-
node {
def mvnHome
def mvnSettings
stage('Prepare') {
mvnHome = tool 'maven-3.5.4'
}
stage('Checkout') {
checkout scm
}
stage('Build'){
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS install"
}
}
stage('Integration Test') {
sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean verify"
}
stage('Sonar') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS sonar:sonar"
}
}
stage('Packaging') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS package"
}
}
stage('Deploy') {
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS deploy}"
}
}
}
Any help or suggestions here would be greatly appreciated as always.
Cheers,
Ashley
解决方案
由于它是脚本化的,因此您不必遵循严格的结构,虽然不是很漂亮,但您可以更改顺序并将阶段放在 configFileProvider 中:
configFileProvider(
[configFile(fileId: '**********', variable: 'MAVEN_SETTINGS')]) {
stage('Build'){
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS install"
}
stage('Integration Test') {
sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean verify"
}
stage('Sonar') {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS sonar:sonar"
}
stage('Packaging') {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS package"
}
stage('Deploy') {
sh "'${mvnHome}/bin/mvn' -s $MAVEN_SETTINGS deploy}"
}
}
最好的,安德烈
推荐阅读
- datatables - 数据表中列的二级排序
- javascript - 剑道网格自动适应除特定列之外的列宽
- amazon-web-services - 降低从 S3 存储桶(多个存储桶)到我们的数据中心的传输费用
- javascript - Mongodb不尊重唯一的部分索引
- python - 维护一个视图的简单数据库?
- javascript - 映射深层嵌套对象数组 JSON 文件
- list - 我正在努力理解如何在 Haskell 中读取 concat
- javascript - 在 D3 中,如何在可缩放树状图中选择当前节点的特定子元素?
- python - 我怎么知道一个属性在哪里被调用?Python
- c - 如何解析 AT 命令响应和 C 输出中的字段之一