somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【CI】JenkinsのインストールとGitリポジトリのローカル設定【Mac】

WIndowsではインストールしましたが、Macではしていなかったのでインストールしました。

インストール

brew install jenkins

==> Downloading http://mirrors.jenkins-ci.org/war/1.510/jenkins.war
==> Summary
  /usr/local/Cellar/jenkins/1.510: 3 files, 51M, built in 35 seconds

上記ディレクトリにインストールされました。

ログイン時に起動

To have launchd start jenkins at login:
    ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents

インストール時の結果に乗っていました。macではログイン時に起動するものはここに設定があるようです。 JavaのUpdaterなどがありました。

ls -l /usr/local/Cellar/jenkins/*.plist
homebrew.mxcl.jenkins.plist
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>homebrew.mxcl.jenkins</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/java</string>
      <string>-jar</string>
      <string>/usr/local/opt/jenkins/libexec/jenkins.war</string>
      <string>--httpListenAddress=127.0.0.1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

プロパティ一覧には、xmlで記述されていました。

今すぐ起動

Then to load jenkins now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
Or, if you don't want/need launchctl, you can just run:
    java -jar /usr/local/opt/jenkins/libexec/jenkins.war

さきほどのplistを読み込むか、plistに記載されているJenkins.warを直接実行しています。

アクセス

Windowsの時と同様にhttp://localhost:8080/にアクセスします。無事に執事さんが表示されました。

プラグイン

macということで、Growlによる通知で日々Jenkinsになれ、どんな設定をしたかを把握できるように以下のプラグインをインストールしました。 あとから気づいたのですが、ソースコード管理システムにGitがなかったので追加しました。

  • Growl Plugin
  • JobConfigHistory Plugin
  • Git Plugin

また、コマンドラインからもプラグインのインストールが可能です。これによって、Jenkinsのインストールからプラグインのインストールまで自動化できそうな気がします。

コマンドライン用のjarはJenkinsに含まれているため、Jenkinsサーバーからダウンロード後、プラグインのインストール、Jenkinsの再起動をして最後にjarファイルを削除しています。

wget -O jenkins-cli.jar http://localhost:8080/jnlpJars/jenkins-cli.jar
java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin plugin名
java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart
rm jenkins-cli.jar

mavenの設定

macには3.0.3がありましたが、インストールしました(3.0.5)。

% brew install maven

結局アンインストールし、後述のジョブ設定画面からmavenをインストールしました。

Growlの設定

通知先(今回はMac)の設定は、ネットワークタブの受信される通知を聞くとリモートアプリケーション登録を許可にチェックを入れます。その後、パスワードを設定します。

Jenkins側での設定は、Global Growl Settingsにて通知先で設定したパスワードを入力するだけです。

Jenkinsのアップデート

Jenkinsの管理からアップデートできました。画面のフッター右に表示されるバージョンが「Jenkins ver. 1.516」に変わりました。

ジョブの設定

フリースタイル・プロジェクトのビルドを選びました。理由は、maven以外のビルドシステムを扱うときにこちらのほうがいいと感じたからです。Maven2/3プロジェクトのビルドでは、設定ファイルにxml(pom.xml)を扱うのでとても見づらいです。そこまで各設定要素に対して厳密な定義が必要でなければxmlである必要はないと思っています。

  • ソースコード管理でGitを選択
  • RepositoriesのRepository URLを入力
    • 今回はローカルのリポジトリを指定(ディレクトリへのパス) *1
  • ビルドのルートPOMに入力されているpom.xmlリポジトリの直下に作成*2
  • 後処理のシェルの実行を試しに追加
  • ビルド後の処理にGrowlを追加

ビルドの実行

プロジェクトのTOPからビルドを実行します。以下のような結果になりました。

  • ビルドに成功した
  • masterブランチへのコミット時に入力したコミットメントが表示された
  • なんかモジュールが追加された(´・ω・`)
  • 後処理のシェルスクリプト(pwd)が実行され、出力された
  • Growl通知が表示された

詳細はコンソール出力に記載されています。

感想

無事にビルド成功できて嬉しかったです。しかし、まだまだやれることが少ないのでこれから設定を増やしていきたいです。

  • メール通知(これがあればGrowlいらない、もしくはメール受信をGrowlで通知)
  • GitのhookスクリプトとJenkinsの連携
  • 上記によるテスト実行の自動化
  • リモートリポジトリとの連携(API)

*1:ローカル以外はGit PluginのWikiを参照

*2:github-maven-exampleを参考にしました