2013年2月20日

Azure Virtual MachineでVisual Studio & JenkinsなCI環境を構築する(2) ~ Githubプライベートリポジトリからのソース取得

「Azure Virtual MachineでVisual Studio & JenkinsなCI環境を構築する(1) ~ インストール編」でAzure Virtual Machineを使ったJenkinsサーバの構築を行いました。今回はそれに続いてJenkinsからgithubのプライベートリポジトリからソースコードを取得してビルドする方法を紹介します。

Gitコマンドの初期設定

JenkinsからGithubのソースを取得するために、まずgitのコマンドをインストールする必要があります。git自体はCygwin版でもmsysでもどちらでも問題ないと思いますが、ここでは一番インストールが簡単と思われるGit for Windowsを使いました。ダウンロードは以下のURLから。

http://msysgit.github.com/

Git for Windowsのインストールが完了したら、githubからプロジェクトをcloneできるように初期設定を行いましょう。まずは、Git for Windows のGit Bashから以下のコマンドで名前とメールアドレスの設定を行います。

次にgithubへアクセスする際に使うSSH公開鍵を作成します。Git Bashから以下のコマンドを実行しましょう。

このコマンドを実行すると、$HOME/.sshのディレクトリ内にid_rsa.pubという名前で公開鍵ファイルが作成されます。このファイルの中身をコピーして、githubのアカウント設定-SSH Keysの画面から新しい公開鍵として登録します。

image

この登録ができたら、gitコマンドでプライベートリポジトリを利用できるようになります。

次に、github.comを.ssh/known_hostsに登録するために以下のコマンドを実行します。

そして、Jenkinsがgitなどのコマンドを実行する際は"Local System Account"で実行するため、以下のパスがHOMEディレクトリとして扱われます。gitやsshのコンフィグはHOMEディレクトリにあるものが使われるので、以下のディレクトリに上記手順で設定が保存された .sshディレクトリ と .gitconfig ファイルをコピーしておきましょう。

C:\Windows\SysWOW64\config\systemprofile

以上で設定が完了です。

Jenkinsのgit連携設定

gitコマンドが正しく利用できるようになったら、次はこのgitコマンドを使ってソースの取得ができるようにJenkinsの設定を行います。

まずは、Jenkinsにログインして、「Jenkinsの管理」-「プラグインの管理」から「Git Plugin」をインストールします。インストールができると、「システムの設定」画面にgitの設定項目が現れるので、そこにインストールしたGit for Windowsのgit.exeへのパスを入れて保存します。

私の場合は64bit Windowsなので C:/Program Files (x86)/Git/cmd/git.exe を設定しました。

※注1) パスは "\" ではなく "/" で指定しましょう。

※注2) Git/bin ではなく Git/cmd ディレクトリ内のgit.exeを指定しましょう

これでJenkinsのgit連携設定は完了です。

JenkinsでGithubからソースコードをcloneしてみる

以上で設定が完了したので、早速Jenkinsを使ってGithubからソースコードをcloneするプロジェクトを作成しましょう。ダッシュボードから「新規ジョブ作成」を選択し、「フリースタイル・プロジェクトのビルド」からプロジェクトを作成します。

image

次の設定画面で、cloneするリポジトリのURLを設定します。

image

以上でプロジェクトの作成が完了です、「ビルド実行」すると、指定したGitリポジトリからソースコードがcloneされます。

これで、GitHubのプライベートリポジトリ上にあるソースコードを利用したCI環境をWindows Azure上に構築できます。あとの使い方は、普通のJenkinsと一緒です。

あ、ひとつだけ注意点が、CドライブがJenkinsのworkspaceになりますが、Azure VMのCドライブは結構容量が少ないです(30GB固定)。workspaceをDドライブに切り替えられればいいんですが、上手く行かなかったのでそのままです。誰か詳しい人いたら教えて下さい。

JenkinsのサービスがLocal System Accountで動いているのもちょっと嫌だったり。。。

0 件のコメント:

コメントを投稿