【Artifactory】各リポジトリタイプ毎のファイルの扱い方

# ファイルの格納/取得方法
Artifactoryには様々なリポジトリタイプが存在します。
当然リポジトリタイプ毎によってファイルの格納/取得方法が異なりますが、今回は現場でも使用経験のある一部のタイプを紹介したいと思います。
ちなみにArtifactoryのWeb画面にある「Set Me Up」ボタンをクリックすると各リポジトリタイプ毎の使用方法は掲載されています。

## 共通（genericリポジトリ）
Artifactoryの各リポジトリは、genericタイプと同じコマンドを使用してファイルの格納と取得が可能です。
コマンドは以下の通りです。
ただし以下のコマンドで格納・取得した場合本来想定したリポジトリタイプ毎の動作と異なってしまう等の問題が発生するかもしれませんので、何でもかんでも以下コマンドで格納/取得するのは避けた方が良いと思います。
そうでないとリポジトリタイプを分ける意味がありませんので…

``` ruby:格納
curl -u <ユーザー名>:<パスワード> -T <対処ファイル名> "https://<ArtifactoryのURL>/artifactory/<リポジトリ名>/"

※ディレクトリの中に格納する場合
curl -u <ユーザー名>:<パスワード> -T <対象ディレクトリ名>/<対処ファイル名> "https://<ArtifactoryのURL>/artifactory/<リポジトリ名>/<対象ファイルへのパス>/<対象ファイル名>"
```

``` ruby:取得
curl -u <ユーザー名>:<パスワード> -O "https://<ArtifactoryのURL>/artifactory/<リポジトリ名>/<対象ファイル名>"

※対象ファイルがディレクトリの中に格納されている場合
curl -u <ユーザー名>:<パスワード> -O "https://<ArtifactoryのURL>/artifactory/<リポジトリ名>/<対象ファイルへのパス>/<対象ファイル名>"
```

注意点として、格納の際に格納先リポジトリにディレクトリを指定して格納する場合は、格納先のディレクトリ名だけではなくファイル名まで指定する必要があります。
ディレクトリを指定しない場合は、```<リポジトリ名>/```までで良いです。

## yumリポジトリ
yumリポジトリは、RedHat系OSのパッケージ管理用のリポジトリタイプです。
yumリポジトリについて、Artifactoryの「Set Me Up」には以下の文言が記載されています。

``` ruby:Set_Me_Up
To deploy an RPM package into an Artifactory repository you need to use Artifactory's REST API or Web UI.
For example, to deploy an RPM package into this repository using the REST API, use the following command:

以下格納コマンド
curl -u <ユーザー名>:<パスワード> -XPUT https://<ArtifactoryのURL>/artifactory/<rpmリポジトリ名>/<PATH_TO_METADATA_ROOT> -T <TARGET_FILE_PATH>
```

上記文言には格納するためには「REST API」なるものが必要という事を記載されている様ですが、実際にはREST APIを使用しなくても以下のgenericリポジトリの格納コマンドでrpmパッケージファイルを格納する事が可能です。
以下コマンドで格納した場合にも、yumコマンドで対象パッケージを取得する際に必要なメタデータが自動で作成されます。

``` ruby:格納
curl -u <ユーザー名>:<パスワード> -T <rpmパッケージ名> "https://<ArtifactoryのURL>/artifactory/<リポジトリ名>/"
```

yumリポジトリからのrpmパッケージ取得については[前回の記事](https://qiita.com/fy406/items/c9c2ce14e0db60b60c8c)で説明していましたので、ここではさらっと記載します。
事前準備として```/etc/yum.repos.d/artifactory.repo```ファイルをviなどで開き、以下の内容を記載します。

``` ruby:/etc/yum.repos.d/artifactory.repo
[Artifactory]
name=Artifactory
baseurl=https://<ユーザー名>:<パスワード>@<ArtifactoryのURL>/artifactory/<rpmリポジトリ名>/
enabled=1
gpgcheck=0
```

それから```yum install <対象rpmパッケージ名>```を実行すれば、取得対象のArtifactoryリポジトリからパッケージが取得されます。
ちなみに取得対象パッケージが対象yumリポジトリ内に存在しない場合は、外部リポジトリサイトから取得しに行きます。

## npmリポジトリ
npmリポジトリは、Node.jsのパッケージ管理用のリポジトリです。
npmはwindowsでも使用可能です。使用するためには[こちら](https://nodejs.org/en)からインストーラをダウンロードしてインストールします。
インストール後はコマンドプロンプトにてnpm関連のコマンドが使用可能になります。　　

Artifactoryのnpmリポジトリの使用方法ですが、まず事前準備としてnpmのリポジトリにArtifactoryの対象npmリポジトリを設定する必要があります。
コマンドは以下です。

``` ruby:npmレジストリ
npm config set registry https://<ArtifactoryのURL>/artifactory/api/npm/<npmリポジトリ名>/
```

その後、以下のコマンドを実行し、npmのリポジトリへログインします。

``` ruby:npm_login
npm login
Username: <Artifactoryのユーザー名>
Password: <上記アカウントのパスワード>
Email: <上記アカウントに登録したメールアドレス>
※メールアドレスはダミーでもいけます
```

npmの基本的な使い方はここでは省略させて頂きますが、コマンドプロンプト上で```package.json```ファイルとそのjsonファイルが管理しているjsファイル等が格納されているプロジェクトフォルダへ移動し、以下のコマンドを実行することでnpmリポジトリへnpmパッケージが格納されます。

``` ruby:npmパッケージ格納
npm publish

※リポジトリを指定する場合
npm publish --registry https://<ArtifactoryのURL>/artifactory/api/npm/<npmリポジトリ名>/
```

格納したnpmパッケージを取得する場合は以下のコマンドを実行するだけです。

``` ruby:npmパッケージ取得
npm install <npmパッケージ名>

※リポジトリを指定する場合
npm install <npmパッケージ名> --registry https://<ArtifactoryのURL>/artifactory/api/npm/<npmリポジトリ名>/
```

今回紹介したリポジトリタイプは以上となりますが、Artifactoryには様々なリポジトリタイプがありますので、今後も時間があれば他のリポジトリタイプの使い方も調べてみたいと思います。