我想在运行时从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/

10-09 05:11