我想在运行时从jenkins管道脚本替换具有$variablename的文件中的一些变量。对于我的用例来说,envsubst似乎是最好的。当我在linux服务器上通过命令行执行时,它可以正常工作,但是当我用sh脚本通过jenkins管道执行时,什么都不会发生。
声纳扫描器特性:
sonar.projectKey=Project:MavenTest$BRANCHNAME sonar.projectName=MavenTest$BRANCHNAME
linux框上的命令行示例:
出口BRANCHNAME=develop $ envsubst '$BRANCHNAME‘
输出:
sonar.projectKey=Project:MavenTestdevelop sonar.projectName=MavenTestdevelop
但是,当我以脚本的形式执行jenkins文件时,文件中没有任何更改。
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=Project:MavenTest$BRANCHNAME
sonar.projectName=MavenTest$BRANCHNAME
有人能帮帮我吗?
发布于 2019-01-17 13:29:05
嗨,我不知道envbust,但可以通过命令行将声纳参数传递到声纳,请参见下面的示例:
withSonarQubeEnv('Sonar') {
sh "<sonarscanner path> -Dsonar.projectKey=Project:MavenTest$BRANCHNAME"
}发布于 2020-05-19 12:58:12
我遇到了这个问题,并通过使用他的转义字符\解决了这个问题,例如:
sh "envsubst '\${SERVER_NAME}' < ./config/nginx/nginx.conf.template > ./config/nginx/nginx.conf"https://stackoverflow.com/questions/54234973
复制相似问题