Дженкинс: Base64 Кодирует JSON

#json #jenkins #jenkins-pipeline

Вопрос:

Новичок в Дженкинсе и пытается закодировать это на основе 64:

 stages {
        stage('Debug') {
            steps {
                script {
                  outgoing_json = '''{
                      "spec": "1.0.0"
                  }
                  '''
                  outgoing_encoded = sh(returnStdout: true, script: "echo $outgoing_json | base64")
                }

                echo "outgoing_encoded: ${outgoing_encoded}"
            }
}
 

Конечно, я получаю ошибку, потому что она содержит двойные кавычки. Есть ли лучший способ сделать это?

Ответ №1:

Мы можем принять возвращаемое значение в переменной с returnStdout за истинное:

 def ret = sh(script: 'echo $outgoing_json | base64', returnStdout: true, returnStatus: true)
 

Дополнительная информация : https://www.jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script.
Примечание. Вы также можете добавить encoding: 'UTF-8' , чтобы явно указать кодировку.

Ответ №2:

Вы также можете сделать:

 outgoing_encoded = "echo $outgoing_json".bytes.encodeBase64().toString()