Jenkins で Git リポジトリの ID と PW をセキュアに保存する方法
Jenkins から https 接続で認証付きの Git リポジトリを参照する場合、以下のように URL に直接ユーザー名とパスワードを書く必要がありました。
https://{USERNAME}:{PASSWORD}@foo.com/git/bar.git
当然 Jenkins の設定ファイルにパスワードがそのまま書かれてしまいます。個人開発ならいいですが、チーム開発では危険すぎます。これをセキュアにしようとすると、.netrc を使ったりするややこしい手順が必要でした。
ところが、2013年10月22日にリリースされた Git Plugin 2.0 から、Credential Plugin と連携して暗号化したパスワードを保存できるようになったため、大幅に設定が楽になりました。
以下にそのやり方をメモしておきます。
リポジトリの URL は https://foo.com/git/bar.git
とします。
“Jenkins の管理 > Credentials > Add domain” をクリックし、Git リポジトリのドメインを入力します。
Specification の URI スキーマには https
を選択します。
続いて、”Add Credentials” をクリックし、認証情報入力画面を出します。
“Kind” は ユーザー名とパスワード
を、”ユーザー名” には https 認証のユーザー名を入力します。完了したら “OK” をクリック。
これで一旦、認証鍵一覧画面に戻されます。引き続き、いま入力したユーザー名をクリック。
“Update” をクリック。
“パスワード” 欄に認証パスワードを入力し、”Save” をクリック。
以上で foo.com のリポジトリの認証情報が設定できました。
あとはプロジェクトの設定画面を開き、”ソースコード管理システム > Git” の “Repository URL” に https://foo.com/git/bar.git
を、”Credentials” に先ほど入力した ID/PW のペアを選択すれば OKです。
これでプロジェクトをビルド可能になります。
Git 1.7.1 では認証が通らない?
CentOS 6.3 で、EPEL リポジトリから Git をインストールすると 1.7.1 が入りますが、これだとうまく認証が通りませんでした。プロジェクトの設定画面で “Repository URL” と “Credential” を入力しても、 Error performing command: ls-remote -h
というエラーが出て進めませんでした。
仕方ないので手動でソースから Git 1.8.4.1 をインストールしたら、無事エラーが出なくなりました。
Git のソースインストール方法手順は以下。いつもの Configure -> make -> make install です。
cd /usr/local/src
wget https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz
tar zxvf git-1.8.4.1.tar.gz
cd git-1.8.4.1
./configure
make
make install
なお、この場合 Git のバイナリが /usr/local/bin
配下にインストールされるので、”Jenkins の管理 > システム設定 > Git > Path to Git executable” に /usr/local/bin/git
と入力する必要があります。