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