インストール
# docker run -d -v /var/opt/jfrog/artifactory:/var/opt/jfrog/artifactory -p 8081:8081 docker.bintray.io/jfrog/artifactory-oss:latest
執筆時の最新バージョン: 5.1.4
セットアップ
ブラウザでhttp://host:8081にアクセスすると、ウィザードが起動
Configure a Proxy Serverはスキップ
Repository Typeは"Generic"と"Maven"を選択
これでもう、Web画面からリポジトリにDeploy(アップロード)が可能。
Set Me Upで各リポジトリへのDeploy方法がわかる。
MavenからのDeploy設定
releaseビルド用とsnapshotビルド用、各々にlocalありなしのリポジトリが作られているが、localの方が実際のリポジトリで、なしの方はVirtualリポジトリで複数のリポジトリをまとめて1つのURLでアクセスできるようにする機能のようなので、とりあえずはlocalの方を使うということでOKそう。
あとは、libs-snapshot-localリポジトリのSet Me Upを開いて、snippetをpom.xmlにコピペするだけ。ただ、これだけだとdeployしたときにPermission deniedになってしまうので、anonymousでデプロイできるようにArtifactoryのPermissions設定を変更する。Anythingを選んで、Usersタブを開き、anonymousユーザに対して、Deploy/Cache権限を与える。
これで、maven deployでデプロイができるようになる。なんと簡単。
セキュリティ設定
だた、このままでは公開して外から使うのは危険なため、以下の設定をする。
- anonymousを無効にして、ユーザ認証を必須にする
- HTTPSにする
ユーザ認証
ArtifactoryでPermissionsの設定でAnythingからanonymousユーザの権限をすべてとり、MavenのUser Settingsファイルsettings.xmlに以下を追加。
...
<servers>
...
<server>
<id>snapshots</id>
<username>admin</username>
<password>password</password>
</server>
...
</servers>
...
HTTPS
以下のような構成にする。
Client -----------> Apache ---------> Artifactory
HTTPS AJP
Docker版のArtifactoryはもとから8019番でajp接続を受け付けるようになっているため、Artifactory側の設定変更は、コンテナ起動の際のポート設定を8019番にするだけ。
# docker run -d -v /var/opt/jfrog/artifactory:/var/opt/jfrog/artifactory -p 8019:8019 docker.bintray.io/jfrog/artifactory-oss:latest
あとはApacheの設定。
# a2enmod proxy_ajp
# vi /etc/apache2/sites-available/default-ssl.conf
<VirtualHost _default_:443>
...
ProxyPreserveHost on
ProxyPass /artifactory ajp://localhost:8019/artifactory
</VirtualHost>
# service apache2 restart