Hatena::ブログ(Diary)

argius note RSSフィード

開発しています

2011-12-03

[]MacOSX版 Hudson CI → Jenkins CI 実施しました 18:04 MacOSX版 Hudson CI → Jenkins CI 実施しましたを含むブックマーク MacOSX版 Hudson CI → Jenkins CI 実施しましたのブックマークコメント

2011-02-19の日記に書いていた、Jenkinsへのマイグレーションを行いました。

思ったよりは少しだけ時間がかかってしまいましたが、無事移行できました。


今回インストールしたのは、Jenkins ver.1.441です。移行前のHudsonのバージョンを残しておくのを忘れてしまいました。たぶん300番台後半だったかと思います。


前準備

.hudsonディレクトリのバックアップを行います。

バックアップは定期的にとっているので次へ。


試しにWindowsにインストール

バックアップから復旧できるかどうかも兼ねて、WindowsXPにインストールしてみました。

インストーラ付きでインストールすると、デフォルトでは"C:\Program Files\Jenkins"にインストールされ、このディレクトリ自体がHOMEディレクトリになり、ここに各種ファイル(war展開、jobs、ログなど)が格納されます。

個人的にはProgram Filesの中を直接作業ディレクトリとするのはどうかと思いますが...


サービスにも自動登録されますので、インストール後、"http://localhost:8080"にアクセスすればすぐにダッシュボードが見られます。

HOMEディレクトリの下にjobsディレクトリがあるので、Jenkinsのサービスを止めてからバックアップの".hudson/jobs"を上書きし、再度起動します。ちゃんと復元できました。


MacOSXにインストール

残念ながらMacPortsでインストールできないので、インストーラでインストールしてみました。

まずは普通にインストールします。こちらの記事を参考にさせていただきました。

ただし、このままでは動きません。いったん"launchctl unload"で落とします。


動かない理由は、参考記事に書かれているように、Homeディレクトリは"/Users/Shared/Jenkins/Home"なのに、ディレクトリは"/Users/Shared/Jenkins"までしか作られていないためです。デフォルトでは"daemon"ユーザで起動するので、ディレクトリの所有者を"daemon"にしてHomeディレクトリを作成します。

起動オプションは、これも参考記事に倣ってdefaultsコマンドを使って設定しました。8080番ポートは使用済みで、Hudsonも8888番だったので合わせます。外部からはApache経由なので、これもHudsonの時と同様にprefixをつけます。

defaults write /Library/Preferences/org.jenkins-ci httpPort 8888
defaults write /Library/Preferences/org.jenkins-ci ajp13Port 8889
defaults write /Library/Preferences/org.jenkins-ci prefix Jenkins

この状態で起動すると、プロセスは

/usr/bin/java -jar /Applications/Jenkins/jenkins.war --prefix=/jenkins --httpPort=8888 --ajp13Port=8889

のようになります。localhost:8888/jenkins/ にアクセスすると、初期化が実行され、ダッシュボードが見えました。

ジョブを移行

再びJenkinsを停止します。初期化が成功し、"${JENKINS_HOME}"に各種ファイルが展開されていますので、Windowsと同じく、"${JENKINS_HOME}/jobs"に".hudson/jobs"を上書きします。

これで基本的に問題なく動く...と思いましたが、参照だけなら問題なかったものの、ビルドを実行したら即エラーの赤い●が出ます。

結果的には、問題は数箇所ありました。ただし細かく検証していないので要点だけ書きます。

  • ジョブ設定しか移行していないので、VCS(SVN,CVS)の認証情報が無い
  • daemonユーザで実行しているので、root所有ディレクトリの書き込み権限が無い
  • daemonユーザで実行しているので、環境変数PATHが違っていてローカルコマンドが実行できない

面倒なので、実行ユーザをHudsonの時と同じくrootにし、VCSの認証情報は設定画面で設定しなおしました。


以上でマイグレーションは完了です。つまづく箇所が多かった気はしますが、基本的にはマイナーバージョンアップ程度の労力で済んだかと思います。

[]Stew 3.2.0 RC1 18:08 Stew 3.2.0 RC1を含むブックマーク Stew 3.2.0 RC1のブックマークコメント

Jenkinsへの移行後の最初のビルドです。

たぶんこのまま正式リリースになるかと思います。

kkawakkawa 2011/12/04 08:38 なんだかお寒いバグがあるみたいで恐縮です。調べてみます。

argiusargius 2011/12/04 11:54 見つけていただいて、こちらこそ恐縮です。
JIRAのほうに登録しようかとも思っていました。

トラックバック - http://d.hatena.ne.jp/argius/20111203