Gradle 認証情報プラグイン - gradle-credentials-plugin
プラグイン紹介
gradle-credentials-plugin は、パスワードベース暗号化 (PBE) を使用して暗号化された認証情報を保存し、アクセスできる Gradle プラグインである。
このプラグインを使うと、Gradle ビルドスクリプトに認証トークン、パスワード、アカウント情報を直接露出させず、暗号化して指定できる。
公式リポジトリは次のとおりである。
プラグインの基本設定方法
credentials サンプルプログラムを作成する
まずプロジェクトを作成する。
% mkdir gradle-credentials-plugin-tutorial
% cd gradle-credentials-plugin-tutorial
% gradle init
credentials を登録する
続いて credentials を登録する。
% gradle addCredentials --key username --value devkuma
% gradle addCredentials --key password --value 1234
登録した credentials の内容を確認する
credentials を登録すると、{USER_HOME}/.gradle/gradle.encrypted.properties に作成されて登録される。
では、認証情報が暗号化された状態か確認する。
% cat ~/.gradle/gradle.encrypted.properties
username=GIBlt3gLLDi/nVavN+FNUg\=\=
password=9GFBSZb+e9bVpdLnUCW1GQ\=\=
build.gradle ファイルを作成する
ビルドスクリプトを次のように作成する。
plugins {
id 'nu.studer.credentials' version '3.0'
}
println "Username: ${credentials.forKey('username')}, Password: ${credentials.forKey('password')}"
復号化を確認する
Gradle を実行してみると、暗号化された文字列が平文で表示されることを確認できる。
% ./gradlew
> Configure project :
Username: devkuma Password: 1234
... omitted ...
特定のディレクトリを指定して properties を作成する方法
上では、credentials を登録するとデフォルトで {USER_HOME}/.gradle/gradle.encrypted.properties に作成および登録されると説明した。
しかし、必要に応じて properties ファイルの場所を変更したい場合もある。そのような場合は credentialsLocation オプションを使用する。
ここでは先ほどのプロジェクトを利用して、プロジェクトディレクトリの中に properties を置いてみる。
properties を初期化する
混乱を避けるため、先ほど作成した Root ({USER_HOME}) にある gradle.encrypted.properties ファイルを削除する。
% rm ~/.gradle/gradle.encrypted.properties
ディレクトリを指定して credentials を登録する
続いて、credentials 登録コマンドにディレクトリを指定する credentialsLocation オプションを追加して実行する。
% gradle addCredentials --key username --value devkuma -PcredentialsLocation=.
% gradle addCredentials --key password --value 1234 -PcredentialsLocation=.
ここでは現在位置を意味するドット (.) を指定している。
場所を指定して登録した credentials の内容を確認する
コマンドに credentialsLocation オプションで指定したとおり、現在位置に ./gradle.encrypted.properties が作成されたことを確認できる。
では、認証情報が暗号化された状態で保持されているか、もう一度確認する。
% cat ./gradle.encrypted.properties
username=GIBlt3gLLDi/nVavN+FNUg\=\=
password=9GFBSZb+e9bVpdLnUCW1GQ\=\=
場所を指定して復号化を確認する
場所を指定して Gradle を実行すると、暗号化された文字列が平文で表示されることを確認できる。
% ./gradlew -PcredentialsLocation=.
> Configure project :
Username: devkuma Password: 1234
... omitted ...
参考
上記のサンプルコードは GitHub で確認できる。