Выход из доллара в учетных данных Jenkins - PullRequest
0 голосов
/ 21 июня 2020

У меня есть test$001 как значение в учетных данных секретного текста Jenkins. Позже в сценарии конвейера я обращаюсь к этому значению и записываю его в файл yaml, как указано ниже, который используется как конфигурационная карта K8S.

Проблема со знаком доллара в значении.

environment {
    TEST_CRED=credentials('TEST_CRED')
}

скрипт. sh

cat << EOF > test.yaml
...
data:
 TEST: ${TEST_CRED}
EOF

Ожидается: test$001

Напечатано: test$$001 (Примечание дополнительный знак доллара вставляется автоматически)

Я перепробовал все возможности, чтобы избежать этого знака доллара, ничего не помогло.

TEST_01: '${TEST_CRED}'
TEST_02: ${TEST_CRED}
TEST_03: '$${TEST_CRED}'
TEST_04: $${TEST_CRED}
TEST_05: "$${TEST_CRED}"
TEST_08: $TEST_CRED

Ответы [ 2 ]

0 голосов
/ 25 июля 2020

При сохранении значения в учетных данных секретного текста Jenkins избегайте знака доллара. Итак, test$001 на самом деле должен быть сохранен как test\$001.

Для меня работает следующее:

pipeline {
    agent any

    environment {
        MYTEST_CRED=credentials('TEST_CRED')
    }

    stages {
        stage('Special Char') {
            steps {
                sh """
                    cat << EOF > test.yaml
                    Name: test-config
                    Namespace: default
                    data:
                         TEST: ${MYTEST_CRED}
EOF
                """
            }
        }
    }
}

Вывод:

введите описание изображения здесь

0 голосов
/ 21 июня 2020

Я сделал настройку согласно вашим требованиям и получил желаемые результаты. Настройка показана ниже со снимками экрана:

  1. Настройка секретных текстовых учетных данных Jenkins enter image description here
  2. Setup Binding in the Jenkins job enter image description here
  3. Configuring the build to create the test.yaml enter image description here
  4. Content of test.yaml
$ cat test.yaml 
...
data:
 TEST: test$001
...