認証情報を利用する
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)
^