Ubuntu ServerにJenkinsをセットアップしてGitレポジトリと連動するまでのまとめ
さくさく行きます。
前提条件
Jenkins, Gitレポジトリのあるサーバー共にUbuntu Server 11.10 (64bit) です。
Gitレポジトリの管理にはgitosisを使用します。
git clone, pullにはsshを使用するので公開鍵登録を行います。
sshのポートは標準の22ではなく10022を使用します。
Jenkinsのインストールとセットアップ
公式ページ ( http://pkg.jenkins-ci.org/debian/ ) を参考にしつつPPAを追加してapt-get installします。
Gitのプラグインも一緒にインストールします。
$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - $ echo "deb http://pkg.jenkins-ci.org/debian binary/" | sudo tee -a /etc/apt/sources.list $ sudo apt-get update $ sudo apt-get instal jenkins $ wget -O jenkins-cli.jar http://localhost:8080/jnlpJars/jenkins-cli.jar $ java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin git $ java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart $ rm jenkins-cli.jar
インストールが終わるとjenkinsユーザーが作成されます。
jenkinsユーザーにGitレポジトリのクローン時に必要になるssh鍵やgitconfigの設定を行います。
$ sudo -u jenkins -H git config --global user.email "jenkins@jenkins-server" $ sudo -u jenkins -H git config --global user.name "jenkins" $ sudo -u jenkins -H ssh-keygen -t rsa -C jenkins@jenkins-server
/var/lib/jenkins/.ssh/id_rsa.pub がgitosisで必要になるのでコピーしておきます。
鍵の名前も変更しておきます。
作業しやすいように作業ユーザーにchownしておいてください。
$ sudo cp /var/lib/jenkins/.ssh/id_rsa.pub ~/[email protected]
.ssh/configを編集してGitレポジトリサーバーのsshポートを登録します。
$ sudo -u jenkins vi /var/lib/jenkins/.ssh/config
Host git-server Port 10022
Gitレポジトリサーバーと通信するために一度known_hostsに追加する必要があるのでsshを試みます。接続する必要はないです。
$ sudo -u jenkins ssh git-server (known_hostsに追加していいか聞かれるのでyesを答える)
Gitレポジトリの作成
gitosisを使ってアカウント管理とかレポジトリの管理をします。gitosisは便利です。
gitosisの説明や使い方は gitosisによるgitサーバーの管理 ( http://dora.bk.tsukuba.ac.jp/~takeuchi/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2Fgitosis%20%A4%CB%A4%E8%A4%EB%20git%20%A5%B5%A1%BC%A5%D0%A1%BC%A4%CE%B4%C9%CD%FD ) が参考になります。
gitosis-initで管理用のレポジトリを作ったところで作業を開始です。
$ git clone gitosis@git-server:gitosis-admin.git
gitosis-adminにJenkinsサーバーの公開鍵とユーザー情報を追加します。
Jenkinsがpushすることはない(あっても困る)ので読み取り専用権限でいいと思います。
そこでreadonlyグループを作成し、clone, pullができるGitレポジトリの名前を登録します。
サンプルではyourprojectとします。
$ cp [email protected] gitosis-admin/keydir $ vi gitosis-admin/gitosis.conf
[gitosis] [group readonly] members = jenkins@jenkins-server readonly = yourproject
これでJenkinsからGitレポジトリへのアクセスができるようになりました。
gitosis@git-server:yourproject.git
でアクセスできるようになります。