Edited at

Declarative Pipeline で Jenkins に保存された認証情報を利用する

More than 1 year has passed since last update.


認証情報を利用する

Jenkins の Declarative Pipeline で Jenkins に保存されている認証情報を利用する際に environmentディレクティブ内で credentials() というヘルパメソッドが利用できます。

pipeline {

agent any
environment {
CREDENTIALS = credentials('credentials-id')
}
stages {
stage('Print Environment Variables') {
steps {
sh 'printenv'
}
}
}
}

これにより、 CREDENTIALS という環境変数に認証情報が持っている値が格納され、認証情報の中身を環境変数から読み込めるようになります。

種類が Secret text の場合には項目 Secret に保存された値が入り、種類が ユーザー名とパスワード だと項目 ユーザー名 と項目 パスワード に保存された値が ユーザー名:パスワード というコロンで結合した形で入ります。また、認証情報変数名の後ろに _USR をつけた環境変数(この例だと CREDENTIALS_USR )に ユーザー名 が、認証情報変数名の後ろに _PSW をつけた環境変数(この例だと CREDENTIALS_PSW )に パスワード が入ります。


認証情報をパラメータ化する

認証情報をパラメータ化する場合には、 parameters ディレクティブに credentials というパラメータを設定し、 credentials() メソッドに GString で渡します。

pipeline {

agent any
parameters {
credentials(
name: 'credentials',
credentialType: 'com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl'
)
}
environment {
CREDENTIALS = credentials("${params.credentials}")
}
stages {
stage('Print Environment Variables') {
steps {
sh 'printenv'
}
}
}
}

    environment {

CREDENTIALS = credentials(params.credentials)
}

というように、パラメータの変数を直接渡したくなりますが、以下のようなエラーが出てしまうので、必ずGStringで渡す必要があります。

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:

WorkflowScript: 10: Internal function call parameters must be strings. @ line 10, column 23.
CREDENTIALS = credentials(params.credentials)
^