リポジトリ管理ツール:Artifactoryの紹介

何か驚くほどに(日本語の)情報が少ない。めぼしいものといえば、ぐらい?なので、ちょっと書いてみます。


概要

リポジトリ管理ツールとは

リポジトリ管理ツールとは、Mavenなどのビルド結果の生成物(アーティファクト)を突っ込むためのリポジトリ(インハウスリポジトリ)を簡単に立てることができるツールです。まあぶっちゃけインハウスリポジトリWebDAVでも構わないので、Apacheとか使うと簡単に構築することはできます。ただ、ツールとして作られている以上、単純なWebDAVにはない機能も備えているわけでして。

いくつかあげると、

  • セントラルリポジトリをはじめとした、リモートリポジトリのキャッシュ
  • リポジトリの分割・分割されたリポジトリの仮想的な統一
  • デプロイされているアーティファクトの検索
  • Jarの内部を参照可能
  • セキュリティをロールに応じて細かく設定可能

のような、細かいながらも便利な機能を備えています。

https://cacoo.com/diagrams/U0u5Kn5wshzbt0eS-40E30.png

インストールも簡単です。大抵のプロダクトはWarファイルが提供されてるのでコンテナにつっこめば動きますし、スタンドアロンでも動かすこともできます(大体は裏でJettyが起動します)。商用版と合わせてフリー版も用意しているプロダクトも多いです。

比較

JFrogが提供しているArtifactoryや、Sonatypeが提供しているNexusなど、いくつか類似のプロダクトがあります。比較は以下の表を参考に。

ざっと眺めたところ、

  • Eclipseとの連携はNexusの方がよさそう
    • M2Eを開発してたSonatypeが開発元ですしね。
    • 2011/11/08リリースされた最新のArtifactoryでは、EclipseのP2 Repositoryのサポートがあるみたい。Proだけなので、試せてないけど。
  • Ivy, GradleやJenkinsとの連携はArtifactoryがよさそう
  • Archivaは・・・どこがいいのか分からない
    • 使ったことないのもあるし、使ってるところも見たことがないので・・・。

というわけで、Ivy/Gradleユーザの私はArtifactoryを選択したので、Artifactoryについてちょっと取り上げてみます。

Artifactory

Artifactoryでも、上記で取り上げた基本的な機能はあります。細かいところはユーザガイドWikiを見たり、公開されているリポジトリ(例:Gradleリポジトリ)を触ってみて使い心地を確かめてみてください。

Jenkinsとの連携

僕は使ってないのですが、Jenkinsとの連携もできます。この辺詳しいことは、@さんに聞けば分かると思います |ω・`)チラ。まあそれだけじゃあんまりなので、一応自分でも試して、簡単にスクリーンショットを。

まずは、Jenkins/Artifactoryの各画面の遷移図の説明。Jenkinsのジョブ(図左上)に対応して、Artifactoryではそのジョブに該当するビルド一覧(図右上)が表示されます。もちろん、Jenkinsの各ビルド(図左下)に対応して、Artifactoryでもビルドが記録されます(図右下)。ここではJenkins => Artifactoryへの遷移だけを示していますが、Artifactory => Jenkinsへのリンクももちろんたどることができます。
https://cacoo.com/diagrams/U0u5Kn5wshzbt0eS-11ED3.png

ビルド時に記録される情報はこんな感じ。これ以外にも環境変数なども記録しておくことができます。
https://cacoo.com/diagrams/U0u5Kn5wshzbt0eS-D4EC6.png

なお、Artifactoryにはアーティファクトをディレクトリ階層構造で見ることができるビューもあるのですが、フリー版(OSS版)ではそこからJenkinsとの連携機能は無効化されていました。実際には、「アーティファクトをディレクトリ階層からたどって検索して、そこからこのアーティファクトはどのビルドで生成されたものか」というのを確認したいことが多いと思うので、この機能が使えないのはちょっと残念ですね。
https://cacoo.com/diagrams/U0u5Kn5wshzbt0eS-43CDF.png


あればものすごい便利というわけでもないけど導入自体にそこまで手間はかからないので、ぜひ入れておきたい部類ですね。