【CI/CD実習】GitLab→Jenkins→Artifactoryの動作検証 前半

これまでGitLabとJenkinsとArtifactoryに触れてみましたので、3つのサービスを連携させてみました。
今回はGitLabにjavaファイルを格納してJenkinsからそのプロジェクトを参照してjarファイルにコンパイルして、その成果物をArtifactoryに格納まで実施してみます。

# GitLabにてjavaファイル作成
まずはGitLab上で以下のjavaファイルを作成します。

```ruby:test.java
class javatest{
        public static void main(String[]args){
                System.out.println("Hello World");
        }
}
```

jarファイルの生成には以下の```manifest.mf```ファイルが必要らしいので、GitLabのプロジェクトに以下ファイルも追加作成します。
```Main-Class:```の後ろに入力する値は、上記javaファイルに記載している```Class javatest```のjavatestとなります。

```ruby:manifest.mf
Main-Class: javatest
```

上記ファイルをGitLabのプロジェクトに作成しました。
![test_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/6ebb2703-e868-1c32-4730-a5b837c11f1b.png)

#Jenkinsにプロジェクトを作成する
次に上記で作成したプロジェクトをJenkinsで動作させる準備として、プロジェクトの作成を実施します。
以下の通りまずは空のプロジェクトを作成しました。
![test_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/e0cb6006-ad3f-297c-6e5d-da19b0e9762e.png)
JenkinsのプロジェクトでGitLabのプロジェクトを参照するためには、プロジェクトの設定から以下の項目を「Git」に変更します。
それから「リポジトリURL」にGitLabのプロジェクトのURLを入力します。
GitLabのプロジェクトにアクセスするための認証情報を設定する必要がありますので、以下画像の緑枠内にある「追加」ボタンを押します。
![test_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/9a42d60f-9c7b-2794-8a26-08e188545015.png)
すると以下のような画面が表示されますので、各項目を設定していきます。
httpでGitLabにアクセスする場合は、「種類」はデフォルトの「ユーザー名とパスワード」のままです。
ユーザー名にGitLabのプロジェクトへのアクセス権をもつGitLab上のユーザー名を入力し、パスワードにはそのユーザーのパスワードを入力します。
以下画像の青枠内の項目を設定すれば最低限アクセス可能となります。
ユーザー名が重複してわかりづらくなってしまう可能性があるので、「説明欄」に追加した対象のユーザーアカウントについての説明文を任意で記載します。
設定が完了したらオレンジ枠内の「追加」をクリックします。
![test_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/561b8bb6-aced-cff4-f477-624c36b47aa1.png)
設定完了後、追加した認証情報を選択すると、正しく設定されていれば以下の通り「リポジトリURL」と「認証情報」の間に表示されていたエラーが消えます。
![test_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/44ae9a3b-c450-bd30-6788-876881e14e79.png)
ちなみにエラーは以下の様に表示されます。
![test_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/d3f3172f-08e5-7aa2-484b-0178f001ae84.png)
認証が通りましたので、次は設定画面の下の方にある「ビルド」からビルド手順の追加を行います。
今回は単純にシェルスクリプトのコマンドでjarファイルのビルドを実施しようと思いますので、「シェルの実行」を選択します。
![test_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/dabb4e84-ad0a-8312-6092-c26edb155240.png)
実行するコマンドは以下の通りです。

```
javac javatest.java
java javatest
jar -cvfm javatest.jar manifest.mf javatest.class
ls -l
```

上記コマンドを「シェルスクリプト」の右側に入力して、「Apply」 - 「保存」をクリックします。
![test_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/edaba8b7-7511-27da-a34f-e9396ba132dc.png)

# ジョブの実行テスト
設定完了後、一度ビルドを実行してみます。
「ビルド実行」をクリックし、少々待ちます。
![test_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/a2912a52-e9f5-e80f-561e-c8ace11001b9.png)
ビルド結果画面に移動します。
以下の青枠内に青色の丸が表示されていれば成功です。
ジョブの出力結果を確認するので、「コンソール出力」をクリックします。
![test_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/9a4631ca-a17e-643b-7fb1-95c26cd67d75.png)
実行されたジョブの内容が表示されます。
以下青線部に```javatest.java```ファイルをコンパイルして作成された```javatest.class```ファイルの実行結果が表示されました。
また、オレンジ枠内に```javatest.class```ファイルと```javatest.jar```ファイルが表示されているため、想定していたコマンドは全て正常に実行完了しているようです。
![test_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/858317/93a17cb9-b1ae-2259-152a-1a8954ec4743.png)
これでGitLabからJenkinsまでの連携は成功しました。
次回はこのプロジェクトで作成されたjarファイルを自動でArtifactoryのリポジトリへデプロイする様に設定していきます。