jenkins - 在 jenkinsfile 中使用 branch-env.BRANCH_NAME 修改 env.BRANCH_NAME 变量,用于多分支管道项目
问题描述
我创建了一个多分支管道项目,因此创建了 jenkinsfile 并将其放在 dev 分支中。在其中一个阶段,我必须运行 mvn sonar:sonar -Dsonar.scm.branch=branch-${env.BRANCH_NAME} 但它会给出错误替换分支-${env.BRANCH_NAME}。我需要 branch-${env.BRANCH_NAME} 作为分支名称,以便在声纳我可以在声纳仪表板的分支部分看到分支开发。
如果我使用 mvn sonar:sonar -Dsonar.scm.branch=env.BRANCH_NAME 那么它提供输出,但它将充当声纳中的短期分支。但在声纳,我们希望分支作为长寿分支。
!/usr/bin/env groovy
管道{代理{标签'ol73_slave-jdk8u192-git'}
options {
timestamps()
timeout(time: 2, unit: 'HOURS')
buildDiscarder(logRotator(numToKeepStr: '10'))
disableConcurrentBuilds()
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Unit Test and Code Scan') {
steps {
echo "*****JUnit Tests, JaCoCo Code Coverage, & SonarQube Code Qualiy Scan*****"
withMaven(jdk: 'jdk8_u192', maven: 'maven-3.3.9', mavenSettingsConfig: '79ecf9bd-8cbc-4d5e-b7d1-200241e16b52') {
sh '''
cd DARC
mvn clean package sonar:sonar -Dsonar.host.url=***** -Dsonar.login=******* -Dsonar.exclusions=file:**/src/test/** -B -Pcoverage -Dsonar.branch.name=branch-${env.BRANCH_NAME}
'''
}
}
}
}
}
解决方案
在 groovy 中,字符串封装在单引号中''
,GString 封装在双引号中""
为了进行插值,您需要使用 GStrings。在您的示例中,这应该只是
sh """
cd DARC
mvn clean package sonar:sonar -Dsonar.host.url=***** -Dsonar.login=******* -Dsonar.exclusions=file:**/src/test/** -B -Pcoverage -Dsonar.branch.name=branch-${env.BRANCH_NAME}
"""
推荐阅读
- macos - 带有 Yandex.Metrica 的网站不再在 Safari 15 中打开。如何修复?
- python - 如何将具有相似文件名的文件移动到Python中的新文件夹中
- apache-kafka - 您如何在 Apache Kafka 中使用 AVRO 序列化处理嵌套的源数据?
- c++ - 在 C++ 中将函数分配给变量
- java - 为什么服务未在 AWS ECS Fargate 中读取 AWS Secrets Manager
- ssl - 将 SSL 配置迁移到 Elytron
- html - 从主页中删除课程
- r - 如何自动计算具有或不具有行名的表的行数和列数
- powershell - 如何使用 Powershell 脚本在 SharePoint 现代页面中创建嵌入 Web 部件和按钮 Web 部件
- flutter - Flutter - 更新 CustomScrollView 的滚动控制器