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の認証情報は設定画面で設定しなおしました。
以上でマイグレーションは完了です。つまづく箇所が多かった気はしますが、基本的にはマイナーバージョンアップ程度の労力で済んだかと思います。