我需要从詹金斯日志中隐藏参数

时间:2019-07-26 09:30:45

标签: docker jenkins jenkins-pipeline dockerfile

我需要通过Jenkins构建具有属性集的Docker映像,我还需要将私钥作为参数传递,但是在构建映像时,我正在Jenkins日志中获取私钥。我需要摆脱它,我只需要映像构建日志,任何人都可以在此帮助我

docker build --build-arg SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa)-t ${REGISTRY}/${APPLICATION_NAME}:PR-${CHANGE_ID} .

2 个答案:

答案 0 :(得分:1)

如@David所述

  

根本不应该这样将ssh密钥传递到构建序列中

但是要回答您的问题,请修改bash脚本,它不会显示ssh-key的内容。

set +x
docker build --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" -t ssha .
set -x

在构建期间您将看不到ssh_key,但是它将被设置,您可以进行验证

docker run --rm ssha bash -c "cat ~/.ssh/id_rsa"

enter image description here

enter image description here

答案 1 :(得分:0)

尝试使用MaskPasswordWrapper,它将成功屏蔽整个jenkins控制台日志中指定的所有变量。

插件链接:https://wiki.jenkins.io/display/JENKINS/Mask+Passwords+Plugin

script{
    san7ket = 'lololol'
    wrap([$class: 'MaskPasswordsBuildWrapper', varMaskRegexes: [[regex: '(.)']], varPasswordPairs: [[var: 'sjagtap', var:'a']]]) {
    // some block
    echo san7ket
    echo a
}    
}

输出:

[Pipeline] script
[Pipeline] {
[Pipeline] wrap
[Pipeline] {
[Pipeline] echo
********************************************************
[Pipeline] echo
****************************************************************************************
[Pipeline] }
[Pipeline] // wrap
[Pipeline] }
[Pipeline] // script