如何在 Jenkins 中屏蔽临时(非参数、非凭据)密码

How To Mask Ad Hoc (non-Parameter, non-Credential) Passwords in Jenkins

我作为 Jenkins 管道的一部分从 Ansible 取回密码,然后想在 Jenkins 触发的 shell 脚本中屏蔽这些密码。

困难在于这些密码不是管道参数或 Jenkins 凭据。

我可以看到 mask passwords plugin 允许在 Manage Jenkins 中预定义时屏蔽正则表达式。我想在这里做的是定义一个正则表达式(或文字字符串)以编程方式屏蔽。

我想要的是这样的:

def password = getPasswordFromAnsible()
maskPassword(password)
sh "applogin -u ${username} -p ${password}"

sh 脚本应在控制台日志中生成以下内容:

sh "applogin -u my_username -p ******"

一个选项是在您 运行 该特定敏感命令之前禁用命令回显,并遵循使用描述性文本的逻辑:

sh '''
    echo "Attempting to login"
    set +x
    applogin -u ${username} -p ${password}
    set -x 
    echo "Logged in successfully"
'''