2011-09-23

DotCloudにJenkins+Nexus環境を構築してBitbucketと連携してみたよ(3/3)

こんにちは!aquilegiaです。

その2の続きになります。今回で最後になりますのでもう少しお付き合いください。

4、Bitbucketの準備
Bitbucketのアカウントを作成して動作確認用プロジェクトのリポジトリを作成します。

4-1、Bitbucketのアカウントを作成してログイン
Bitbucket公式サイトのSign up freeボタンからサインアップしてください。


例ではアカウント名をaquilegiaで登録しています。今後、BItbucket接続URLなどにaquilegiaと出てきた場合は適宜読み替えてください。

4-2、リポジトリを作成
サインアップが完了したらページ上部にあるRepositoriesからcreate repositoryを選択した後、以下の内容で入力してください。

Name: helloworld
Private: チェック有
Language: Java
Description: 動作確認用プロジェクト
Website: (なし)
Project management: (Wiki、Issue trackingはお好みで)

入力が終わったらCreate repositoryボタンを押下してください。これでBitbucketの準備は終わりです。

5、動作確認用プロジェクトの作成
4-2で作成したリポジトリにプッシュするプロジェクトを作成します。動作確認用なので手間をかけずにMavenで作ります。

5-1、プロジェクトを作成
下記コマンドを実行すると

$ cd ~
$ mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=sample -DartifactId=helloworld -Dversion=0.1-SNAPSHOT
(実行を確認にYと応える)

次の構造のQuickStartプロジェクトが作成されます。

helloworld
├── pom.xml
└── src
    ├── main
    │  └── java
    │      └── sample
    │          └── App.java
    └── test
        └── java
            └── sample
                └── AppTest.java

このままでも動きますが動作確認が目的なので、このプロジェクトが依存しているJUnitを
Nexusから取得するようにpom.xmlにリポジトリ定義を追加します。
</dependencies>の後にDotCloudアカウント名を書き換えたrepositoriesを追加してください。

$ vi helloworld/pom.xml
  <repositories>
    <repository>
      <id>com.dotcloud.nexus</id>
      <url>http://nexus-(DotCloudアカウント名).dotcloud.com/content/groups/public</url>
    </repository>
  </repositories>

5-2、リポジトリへコミット→プッシュ
作成したプロジェクトをBitbucketへプッシュするためにMercurialをインストールします。

$ sudo yum -y install mercurial
$ hg --help

次に作成したプロジェクトにローカルリポジトリを作成してコミットしてください。

$ cd ~
$ mkdir bitbucket
$ hg clone https://(Bitbucketアカウント名)@bitbucket.org/(Bitbucketアカウント名)/helloworld bitbucket/helloworld
$ mv helloworld/* ./bitbucket/helloworld/
$ rm -rf helloworld
$ cd bitbucket/helloworld
$ hg status
$ hg add
$ hg commit -u (Bitbucketアカウント名) -m '初回コミット'

コミット時にユーザ名を指定しておくとBitbucketにリンク付きで表示されます。Bitbucketに存在しないユーザ名を指定するとデッドリンクになるので取得したアカウント名を指定するのが無難です。
最後にBitbucketへプッシュします。

$ hg push https://(Bitbucketアカウント名)@bitbucket.org/(Bitbucketアカウント名)/helloworld

プッシュが成功すればBitbucketのSourceタブにソースが表示されます。


6、動作確認
6-1、Nexus接続情報を設定
Nexusリポジトリは匿名ユーザではアクセスできないように設定したので、 Mavenでビルド時にNexusリポジトリを参照できるよう接続情報を設定したsettings.xmlを作成してください。
またJenkinsがNexusからDLした依存ファイルを保存するローカルリポジトリをjettyユーザが書き込める場所に変更するためlocalRepositoryを指定してください。

$ dotcloud run jenkins.www -- mkdir -p .m2/repository \&\& ls -al
$ dotcloud run jenkins.www -- chmod 775 .m2/repository \&\& ls -l .m2/
$ dotcloud run jenkins.www -- vi .m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <localRepository>/home/dotcloud/.m2/repository</localRepository>
  <servers>
    <server>
      <id>com.dotcloud.nexus</id>
      <username>nexus</username>
      <password>(Nexusパスワード)</password>
    </server>
  </servers>
</settings>

$ dotcloud run jenkins.www -- cat .m2/settings.xml

6-2、動作確認用プロジェクトをビルドするジョブを登録
ブラウザからJenkinsにログインし、左メニューから新規ジョブ作成を選択してください。
以下の内容を入力しOKボタンを押下する

ジョブ名: helloworld
ビルド: フリースタイル・プロジェクトのビルド

ビルドにMaven2/3プロジェクトを指定しないのはsettings.xmlを指定するためです。
次にジョブの細かな設定をします。

ソースコード管理システム: Mercurial
Repository URL: https://(Bitbucketアカウント名):(Bitbucketパスワード)@bitbucket.org/aquilegia/helloworld/

ビルド手順の追加: Mavenの呼び出し
使用するMaven: maven_2.2.1
ゴール: package
高度な設定
JVMオプション: -Dorg.apache.maven.user-settings=/home/dotcloud/.m2/settings.xml

JVMオプションのsettings.xmlファイルの指定は忘れないようにしてください。

6-3、ジョブを実行
登録したジョブの左メニューにあるビルド実行リンクを押下してジョブを実行してください。
ビルド履歴の日付リンクを押下し、左メニューのコンソール出力リンクから詳細を見ることができます。問題がなければ下のようにBUILD SUCCESSFULと表示されるはずです。


画像はわかりやすくするため何回か実行した後のものになりますが、初回はこれに加えてプラグインや依存のDLログが出力されます。



お疲れ様でした。これでDotCloud上にプライベートビルド環境ができました。Jenkinsのジョブ設定で「SCMをポーリング」を指定すればプッシュした後に変更を検知して自動でビルドすることもできます。また今回は手間を省くために動作確認用プロジェクトの作成にEclipseを使いませんでしたが、EclipseのMercurialEclipseプラグイン(updateサイト)を使うとBitbucketとのやり取りが簡単になります。

また注意点としてJenkinsとNexusはどちらもその機能上ディスクを多く使いますがDotCloudはまだディスクの使用制限がはっきりしていません。そのため過度な利用は避けたほうがよさそうです。

開発に使うツールをクラウド上に置くといつでも作業ができて便利です。他のサービスも組み合わせて快適な開発環境を構築してみてください。それではまた。

0 件のコメント: