AWS の EC2 インスタンス（Amazon Linux）に Jenkins 2 をインストールする

## はじめに
こんにちは。
お仕事では [Atlassian Bamboo](https://ja.atlassian.com/software/bamboo) を利用している者です。

最近は [Jenkins](https://jenkins.io/) とはご無沙汰となってしまっていまいました。
「[AWSのEC2インスタンス（Amazon Linux）にJenkinsをインストールする](https://qiita.com/thirota/items/1242767e40f233c65f7f)」から早くも3年の月日が経ちました。

今回は、父の日も近いということで、私にとって「CI のお父さん的存在」である Jenkins おじさんに敬意を表し、最新版を EC2 にインストールしてみます。
 
## EC2 インスタンスの作成
* EC2 インスタンスを作成します。パラメータはお好みで。私は以下のようにしました。
    * AMI は Amazon Linux
    * インスタンスタイプは t2.micro
    * デフォルト VPC
    * Public IP は有効
    * セキュリティグループで SSH 22番、TCP 8080番を IP アドレス指定で許可  

* SSH ログイン後、パッケージをアップデートしておきます。

```
$ sudo yum update
```

## JDK 8 のインストール
Amazon Linux には JDK 7 がインストール済みですが、
最新の Jenkins は Java 8 が必要とのことなので、バージョンアップを行います。

* 現在のバージョンを確認

```
$ java -version
java version "1.7.0_181"
OpenJDK Runtime Environment (amzn-2.6.14.8.80.amzn1-x86_64 u181-b00)
OpenJDK 64-Bit Server VM (build 24.181-b00, mixed mode)
```

* JDK 8 のインストール

```
$ sudo yum install java-1.8.0-openjdk-devel.x86_64
```

* デフォルトの JDK を変更

```
$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2
```

* バージョンを確認

```
$ java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
```


## Jenkins のインストール
* yum のリポジトリを追加します。

```
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
$ sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
```

* Jenkins をインストールします。

```
$ sudo yum install jenkins
```

* 2.127 がインストールされました。

```
$ rpm -qa | grep jenkins
jenkins-2.127-1.1.noarch
```

* ランレベル3と5で自動起動になっているようです。

```
$ chkconfig --list jenkins
jenkins        	0:off	1:off	2:off	3:on	4:off	5:on	6:off
```

## Jenkins の起動

* 起動します。

```
$ sudo service jenkins start
```

* ブラウザで Jenkins の URL にアクセスします。

```
http://＜EC2インスタンスのパブリックDNS or IP＞:8080/
```

## Jenkins の初期設定
おお！この画面は初めて見ました。
最近の Jenkins はウィザードにしたがって初期設定を行うようです。

* 初期パスワードを設定して Jenkins のロックを解除

Jenkins のホームディレクトリに初期パスワードファイルが書き込まれているので、このパスワードを入力します。

![Capture 2018-06-06 at 9.23.39.png](https://qiita-image-store.s3.amazonaws.com/0/83323/7a135ebe-59be-6668-a443-f25afea92d23.png)

* プラグインのインストール

とりあえず、おすすめプラグインを選択しておきます。

![Capture 2018-06-06 at 9.23.52.png](https://qiita-image-store.s3.amazonaws.com/0/83323/b18fdb7d-6ef3-9c28-6909-e98f348f2e74.png)

![Capture 2018-06-06 at 9.24.16.png](https://qiita-image-store.s3.amazonaws.com/0/83323/ed04cb06-1f5c-8993-194e-43d2ab660c19.png)

* 管理者ユーザーの追加

![Capture 2018-06-06 at 9.25.00.png](https://qiita-image-store.s3.amazonaws.com/0/83323/1816345a-cffd-7c23-8686-c45424293c25.png)

* URL の設定

![Capture 2018-06-06 at 9.27.14.png](https://qiita-image-store.s3.amazonaws.com/0/83323/45f468c2-b7c2-f9fa-ff28-41ce60978db7.png)

## 最初のビルド
"Hello" を echo するだけのサンプルジョブを作ってみます。

* 新しいジョブの作成
![Capture 2018-06-06 at 9.30.04.png](https://qiita-image-store.s3.amazonaws.com/0/83323/4d6b9b70-b056-8d2d-66f5-b1a15609299a.png)

* 名前とタイプを指定
![Capture 2018-06-06 at 9.30.56.png](https://qiita-image-store.s3.amazonaws.com/0/83323/15dbfe94-908e-3e7b-b6c8-9ca17343f43f.png)

* ビルド手順の追加

**シェルの実行** を選択して、シェルスクリプトを書きます。

![Capture 2018-06-06 at 9.31.57.png](https://qiita-image-store.s3.amazonaws.com/0/83323/c71f96c4-9b25-4bc7-0100-b30cbaed4baf.png)

* ビルドを実行
![Capture 2018-06-06 at 9.32.14.png](https://qiita-image-store.s3.amazonaws.com/0/83323/af09948a-8736-ee9b-8ab3-e89cefb69e64.png)

* ビルド結果の確認

![Capture 2018-06-06 at 9.33.20.png](https://qiita-image-store.s3.amazonaws.com/0/83323/cef19f20-c578-0da4-57c8-3a2c282dec30.png)

![Capture 2018-06-06 at 9.32.53.png](https://qiita-image-store.s3.amazonaws.com/0/83323/f7c6393d-a85b-30ca-b336-7d447fe7ade1.png)



## おわりに
オールドユーザーの私にとって、セットアップウィザードが新鮮でした。
ジョブの作成手順やビルド画面は昔の Jenkins おじさんのままで安心しました。

以上でインストールと動作確認は完了です。
このあとは EC2 インスタンスの再起動後に URL が変わってしまうので、EIP を割り当てた後、Route 53 などの DNS サービスで URL を固定化してあげると良いでしょう。

## 参考

* https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions