1

我有一个场景,当我们运行 Jenkins 构建时,我们从 s3 存储桶下载敏感数据,我们下载的信息被设置为环境变量。但是下载的信息被吐出来了,我需要屏蔽整个舞台!有什么办法可以掩盖整个舞台?

我尝试查看 Jenkins 的掩码密码插件(https://wiki.jenkins.io/display/JENKINS/Mask+Passwords+Plugin),但没能得到一点。

stage('create secrets') {
    steps {
        script {
            def propMap = readProperties file: "environments/test/envs"
            def properties = propMap.collect { key, value -> return key + '=' + value }

            if (testenv()) {
                withAWS([role: "${propMap['ASSUME_ROLE_ARN']}", region: "${propMap['REGION']}"]) {
                    withEnv(properties) {
                        sh '''
                           aws s3 cp s3://${test-BUCKET}/ssl-certs/ . --recursive
                           export SSL_KEY="$(cat ./server.key | base64 -w 0) "
                           export SSL_CERT="$(cat ./server.cert | base64 -w 0)"
                           export SQL_ALCH="$(echo -n $SQL_ALCH | base64 -w 0)"
                           export SUPER_USER_GROUP="$(echo -n $SUPER_USER_GROUP | base64 -w 0)"

                        '''
                    }
                }
            }

当我在上述阶段运行 Jenkins 时,它会显示用户组的敏感信息,控制台输出中的所有其他内容都需要屏蔽整个信息。

4

1 回答 1

1

您可以在 aws s3... 之前输入“set +x”,在执行输出机密的命令后输入“set -x”。这将禁用结果到控制台的回显。

sh '''
   set +x
   aws s3 cp s3://${test-BUCKET}/ssl-certs/ . --recursive
   export SSL_KEY="$(cat ./server.key | base64 -w 0) "
   export SSL_CERT="$(cat ./server.cert | base64 -w 0)"
   export SQL_ALCH="$(echo -n $SQL_ALCH | base64 -w 0)"
   export SUPER_USER_GROUP="$(echo -n $SUPER_USER_GROUP | base64 -w 0)"
   set -x
   '''
于 2020-06-09T17:28:11.447 回答