Jenkinsをたった1コマンドで公開用Mavenリポジトリにしてしまう方法 #jenkinsja
オライリーの『Jenkins』を献本いただいたので、読みながらJenkinsの勉強をしています。
開発でJavaを使っている場合は、Jenkinsと一緒にMavenリポジトリがあるととても便利です。Mavenリポジトリは、JarやWarだけでなく、Javadocなどのドキュメントも簡単にWebで公開できるようになります。よくみかけるのは、Apache+WebDavなどで作るリポジトリですが、もっと手軽に、Jenkinsのみで作る方法を考えてみました。
まずはJenkinsが利用するローカルリポジトリの設定を確認
Jenkinsの設定画面には、ローカルリポジトリの場所を設定できるところがあります。
- Defaultならば「${JENKINS_HOME}/.m2/repository」
- Local to the executorならば、同時実行ビルドできる数だけ「/var/lib/jenkins/maven-repositories/1」「/var/lib/jenkins/maven-repositories/2」というようにリポジトリができる
- Local to the workspaceならば、Jobごとに「/var/lib/jenkins/job/daipresents-job/ws/.repository/」というようにリポジトリができる
通常は1のように、すべてのJobのライブラリが1つのリポジトリに集まる形で十分だと思います。この設定がデフォルトになっていることを確認します。3の場合は、JOBごとに依存するライブラリのダウンロードが始まるので、ディスクを食べたり、初回ビルドが遅かったりします。
次に公開用ディレクトリであるuserContentにリポジトリのシムリンクを作る
『Jenkins』にも書かれているのですが、Jenkinsのホームディレクトリ(rpmで入れると/var/lib/jenkins)には「userContent」というフォルダがあり、このフォルダは公開用のフォルダになっています。例えば、このフォルダをブラウザで確認したい場合は、以下のURLを叩いてください。
http://your-server-name/userContent/
恐らくReadmeファイルが見えるはずです。userContentディレクトリを使うことで、JenkinsをWebサーバのように使うことができます。userContentを活用して、ローカルリポジトリのリンクをここに作ります。
例: ln -s /var/lib/jenkins/.m2/repository/ /var/lib/jenkins/userContent/repository

これだけで、
http://your-server-name/userContent/repository
が公開用のMavenリポジトリのURLになります。JOBの中では「deploy」ではなく「install」を使うだけでOK。
まとめ
今回の方法ですと、公開リポジトリは読み込み専用になります。書き込みもしたい!場合は、Apacheなどでがんばる必要があります。
ただ、公開リポジトリに書き込みができると、Jenkinsと違った環境でビルドした成果物がデプロイされたり、あやまって消されてしまったりと、共用ならではの問題が出てきてしまいます。個人的には、「成果物(JarやWar)はJenkinsでビルドしたものを正とする」というルールがいいんじゃないかなぁと思います。
インストールすればWeb化らの設定でなんでもできちゃうJenkinsはすばらしいですね。Jenkinsはレガシーなシステムの救世主になりえるツールのように感じています。CI重要。
最後に、献本してくださった@ikeike443さんに感謝いたします。とても奥が深くて勉強になっています。
絶賛翻訳中!この秋発売予定!

『Lean from the Trenches』日本語翻訳版、2013年秋頃予定。
"本書は、全開発者に捧げる戦いの記録だ。圧倒的なリアリティで描かれた 越境するソフトウェア開発に至るための道しるべとなるだろう。"
翻訳:市谷 聡啓・藤原 大、監修:角谷 信太郎、タイトル:未定、出版社:オーム社
詳細情報はこちら!僕について
Dai Fujihara
藤原大はマネージャでありアジャイル実践者だ。そして、プロジェクトリーダー、チェンジ・エージェント、アジャイルコーチ、トレーナーでもある。彼はまたRedmine、Jenkinsといった開発を支援するツール環境の整備や、アジャイル開発を活用した創造的なソフトウェア開発の支援を行っている。さらに、趣味は沖縄離島巡りらしい。
最近の人気
永久保存の本
Venkat Subramaniam (著), Andy Hunt (著), 木下 史彦 (監訳), 角谷 信太郎 (監訳)
アジャイルな習慣とは一体何なのか?本書ではプラクティスを交えながら、その姿勢を読者に問いかけている。世代や役割をこえて色褪せない「アジャイル」に対する良書。Amazonレビュー
Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。(イントロダクションより)
Jonathan Rasmusson (著), 西村 直人 (翻訳), 角谷 信太郎 (翻訳)
アジャイルサムライ―それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。本書では、圧倒的なアジャイルプロジェクトの姿を見せる。2011年爆発的にヒットしたアジャイル開発に情熱を持つエンジニアに届けたい本。タグ
Agile ant Apache bash Eclipse GlassFish install Java Javascript kobo Linux log4j Management Maven Open Source PHP Pukiwiki Python Redmine Ruby Ruby on Rails Scrum Spring Struts Struts2 Subversion Test Tomcat Trac VBA Web WebDriver WebLogic Windows WordPress 働く 勉強会 嫁(ベータ) 思い出し笑う 我思う 旅する 映画/ドラマ 英語を話す 読むと聞く 過去を語るアーカイブ











