BitbucketのプライベートリポジトリをJenkinsからSSHでクローンする
仕事でBitbucketつかってますか? 僕はつかってます。
Bitbucketにリポジトリを作成して継続的インテグレーションを行うときに困るのがプライベートリポジトリのクローンです。Jenkinsからクローンできないとまずい。
この問題を解決するために、以前は専用のアカウントを作成してたりして対処していました。*1。面倒ですね。
最近この問題を解決するためにDeployment Keysという機能がサポートされました*2。このDeployment Keysの使い方を簡単に解説したいと思います。
Jenkins用の鍵を作成
Jenkinsの実行ユーザでsshの鍵を作成します。yumやapt-getでインストールしている場合は、jenkinsユーザが追加されていると思います。sudoして鍵を作成します。
$ sudo su - jenkins
# 鍵を作成
sudoしたくない場合、できない場合は次のシェルスクリプトをJenkinsのJobとして実行するとよいでしょう。
#!/bin/bash if ! test -f $HOME/.ssh/id_rsa.bitbucket; then ssh-keygen -t rsa -N "" -f $HOME/.ssh/id_rsa.bitbucket fi touch $HOME/.ssh/config if ! grep -q bitbucket $HOME/.ssh/config; then echo "Host bitbucket.org" >> $HOME/.ssh/config echo " Hostname bitbucket.org" >> $HOME/.ssh/config echo " IdentityFile ~/.ssh/id_rsa.bitbucket" >> $HOME/.ssh/config echo " StrictHostKeyChecking no" >> $HOME/.ssh/config fi cat $HOME/.ssh/id_rsa.bitbucket.pub
Deployment Keyを設定
JenkinsからクローンしたいリポジトリのAdminタブからDeployment Keyを登録します。