簡體   English   中英

Jenkins - 使用環境變量定義 json

[英]Jenkins - define json using environment variable

我正在嘗試添加一個包含 json 的環境變量,它需要給出部署的分支名稱,如下所示:

stage('Build files') {
    agent { label "${AGENT_NAME}"}
    environment {
       DEPLOYED_BRANCH = '{\"branch\":\"${env.BRANCH_NAME}\"}'
    }
    steps { //Do something}

    ansiColor('xterm') {
    sh """
    echo \"${DEPLOYED_BRANCH}\" > deployed_branch.json
    """
    }
}

部署時,我得到:

 "{"branch":"${env.BRANCH_NAME}"}": bad substitution

我用單引號/雙引號嘗試了幾個不同的選項,但沒有成功。 有任何想法嗎?

你可以這樣做,但它將是 deploy_branch.json 文件中的 JSON 字符串(帶有字符串內容的 JSON 文件)

stage('create a JSON ') {
   environment {
       SOME_ENV_VARS = '{\"branch\":\"$WORKSPACE\"}'
   }
   steps { 
      sh """
          echo $SOME_ENV_VARS > deployed_branch.json
      """
   }
}

可以像這樣更好地完成:

腳本化管道

node {
  stage('any') {
     def myJSON = readJSON text: '{}'
     myJSON.branch = "${env.WORKSPACE}" as String
     writeJSON file: "${WORKSPACE}/x.json", json: myJSON
  }
}

聲明性管道

pipeline {
    agent any;
    stages {
        stage('create a JSON ') {
            steps { 
                script {
                    def myJSON = readJSON text: '{}'
                    myJSON.branch = "${env.WORKSPACE}" as String
                    writeJSON file: "${WORKSPACE}/x.json", json: myJSON
                }
            }
        }
    }
}

注意 - 它需要Jenkins Utility Pluigns

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM