パスワードプロパティがJenkinsfile
で定義されている場合:
properties([
parameters([
password(name: 'KEY', description: 'Encryption key')
])
])
Jenkinsは、パイプラインが実行されるたびにその値を提供するようユーザーに求めます。
このパラメーターをマスクして、echo ${KEY}
は、ユーザーが渡した実際の値を出力しません。ただし、現在のところエコーすると、提供された値がそのまま出力されます。
properties([
parameters([
password(name: 'KEY', description: 'Encryption key')
])
])
node {
stage('Stage 1') {
# Will print the actual value of the KEY, verbatim
sh "echo ${KEY}"
}
}
また、Mask PasswordsプラグインはJenkinsパイプラインでは機能しないため、これを使用することはできません。
ビルドログでこれらのパスワードタイプのパラメーターをマスクする方法はありますか?
マスクパスワードプラグイン を使用します。 私の共有パイプラインライブラリ から取得したJenkinsfile
の例を次に示します。
properties([
parameters([
password(name: 'KEY', description: 'Encryption key')
])
])
node {
stage('Stage 1') {
// Will print the masked value of the KEY, replaced with ****
wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[var: 'KEY', password: KEY]], varMaskRegexes: []]) {
sh "echo ${KEY}"
}
}
}
withCredentials
に関する既存の提案以外に、追加することはあまりありません。ただし、テンプレートを使用してジョブを自動的に生成していて、デフォルトのパスワードを設定している場合は、hudson.util.Secret
テンプレートを保護します。
Jenkins Credentials plugin を使用できます。このプラグインを使用すると、パイプラインで使用するIDを持つ資格情報を作成できます。
コードは次のようになります。
withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
echo "My password is '${password1}'!"
}
あなたのユーザーの場合:
node {
stage('Echo') {
withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
echo "'${password1}'!"
}
}
}
注:パスワードはwithCredentialsブロックでのみマスクされます。