首页 > 解决方案 > 在 Jenkins 凭据中转义美元符号

问题描述

test$001在 Jenkins 秘密文本凭据中有一个值。稍后在管道脚本中,我正在访问该值并将其写入如下所述的 yaml 文件,该文件用作 K8S configmap。

问题在于值中的美元符号。

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

标签: bashjenkinsyaml

解决方案


在 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
                """
            }
        }
    }
}

输出:

在此处输入图像描述


推荐阅读