我想在运行时从jenkins管道脚本替换一个$variablename文件中的一些变量。看起来envsubt对我的用例是最好的。当我在linux服务器上通过命令行执行时,它的工作正常,但是当我在sh脚本中通过jenkins管道执行时,什么也不会发生。
sonar-scanner.属性:
sonar.projectKey=项目:MavenTest$BRANCHNAME
sonar.projectName=MavenTest$BRANCHNAME
linux上的命令行示例:
$export BRANCHNAME=开发
$envsubst'$BRANCHNAME'
输出:
sonar.projectKey=项目:MavenTestdevelop
sonar.projectName=MavenTestdevelop
但当我以脚本的形式执行jenkins文件时,文件中没有任何更改。
詹金斯剧本:
node {
stage('checkout'){
checkout([$class: 'GitSCM', branches: [[name: ':^(?!origin/master$|origin/develop$).*']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'c0ce73db-3864-4360-9c17-d87caf8a9ea5', url: 'http://172.16.4.158:17990/scm/ctoo/testmaven.git']]])
}
stage('initialize variables'){
// Configuring BRANCH_NAME variable
sh 'git name-rev --name-only HEAD > GIT_BRANCH'
sh label: '', script: 'cut -d \'/\' -f 3 GIT_BRANCH > BRANCH'
branchname = readFile('BRANCH').trim()
env.BRANCHNAME = branchname
}
stage('build & SonarQube analysis') {
withSonarQubeEnv('Sonar') {
sh "envsubst '$BRANCHNAME' <sonar-scanner.properties"
}
}
}
输出:
[管道]sh(隐藏)
环境子测试
sonar.projectKey=项目:MavenTest$BRANCHNAME
sonar.projectName=MavenTest$BRANCHNAME
有人能帮帮我吗
最佳答案
嗨,我不知道envbast,但这可以通过通过命令行将声纳参数传递给声纳来实现,请参见下面的示例:
withSonarQubeEnv('Sonar') {
sh "<sonarscanner path> -Dsonar.projectKey=Project:MavenTest$BRANCHNAME"
}
关于linux - 在jenkins管道中用envsubst替换文件变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54234973/