課題
Backlogなどからファイルをwgetで落とそうとすると、APIキーがモロ出しになるのをどうにかしたい。
対応方法
Credentialsを使う
手順
Credential登録
まず Credentialを登録する為、下記へ移動する
Jenkins -> リポジトリ名/チーム名 -> 認証情報 -> Folder -> グローバルドメイン
認証情報の追加
から認証情報を追加する。
今回隠したいのはAPIキーなので、
種別 Secret text とし、SecretにAPIキーを入力し、その他は適当に決める
スクリプトを取得
Jenkins -> リポジトリ名/チーム名 ->Pipeline Syntax
へ移動し、
withCredentials
の項目を確認する。
追加ボタンから秘密テキストを選択し、認証情報から、先程登録したBackLogKey
を選択する。
変数名をApiKey
とし、その後Generate Pipeline Script
ボタンを押下する
押下すると、以下のようなPipeline用のGroovyスクリプトが表示される。
withCredentials([string(credentialsId: 'BackLogKey', variable: 'ApiKey')]) {
// some block
}
Jenkinsfileの更新
あとはあなたのJenkinsfileに追加するだけです。
withCredentials([string(credentialsId: 'BackLogKey', variable: 'ApiKey')]) {
sh "wget -q https://hoge.backlog.jp/api/v2/projects/PROJECT/files/0123456?apiKey=$ApiKey -O ./hogefuga"
}
そうすると、ログとしては下記のような形で出力されます。
+ wget -q https://hoge.backlog.jp/api/v2/projects/PROJECT/files/0123456?apiKey=**** -O ./hogefuga
APIキーが****になってる!やったね!
ユーザIDやパスワードにも使えるようですので、使っていくと良いと思います。