AWSにJenkins環境を構築する

## はじめに
AWSのEC2にJenkins環境を構築する手順です。
Jenkinsプラグインの動作検証などにご利用ください。


## 構築するJenkins環境
1. Amazon EC2
    - OS : Amazon Linux
    - AMI ID :  
        以下確認済み
        - Amazon Linux 2 AMI 2.0.20180622.1 HVM
        - Amazon Linux AMI 2016.03.1 x86_64 HVM  

2. Jenkins
    - version : 2.7  
        　　　　※ 1.651.2も同じです。

## 環境構築手順の流れ
1. EC2のインスタンスを作成します。
2. Jenkinsをインストールします。
3. 起動設定をします。

## EC2インスタンスを作成
1. Amazon LinuxのEC2インスタンスを作成します。ポイントは、以下。
    - SSHのキーペアの秘密鍵（pemファイル）をクライアントPCに保存しておく。  
        PuTTYでEC2にアクセスし操作するのに必要になります。  
        　  
    - セキュリティーグループの設定でJenkinsポート"8080"にアクセスできるようにしておく。

        ```
        AWSマネージメントコンソール  
        → EC2  
        → セキュリティグループ  
        → EC2にアタッチしているセキュリティグループを選択
        → インバウンド → 編集 → ルールの追加
        　　・タイプ：カスタム TCP ルール
        　　・プロトコル：TCP
        　　・ポート範囲：8080
        　　・送信元：任意の場所 0.0.0.0/0
        → 保存
        ```

2. 最新のJenkinsはJava 1.8以降が必要です。
    - Java 1.8をインストールします。
    - alternativesでJava 1.8にセットします。

    ```java
    [ec2-user ~]$ sudo yum install -y java-1.8.0-openjdk-devel
    [ec2-user ~]$ sudo alternatives --config java
    2 プログラムがあり 'java' を提供します。
    
      選択       コマンド
    -----------------------------------------------
    *+ 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 を押して現在の選択 [+] を保持するか、選択番号を入力します:2
    [ec2-user ~]$ java -version
    openjdk version "1.8.0_141"
    OpenJDK Runtime Environment (build 1.8.0_141-b16)
    OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)
    ```

## Jenkinsをインストール
1. [EC2インスタンスに接続します](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html "インスタンスへの接続")。

2. Jenkinsをローカルにダウンロードします。
    
    ```bash
    [ec2-user ~]$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
    ```
    
3. パッケージ署名チェック用のキーをインポートします。

    ```bash
    [ec2-user ~]$ sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
    ```

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

    ```bash
    [ec2-user ~]$ sudo yum -y install jenkins
    ```

5. Jenkinsを起動します。

    ```bash
    [ec2-user ~]$ sudo service jenkins start
    Starting Jenkins                                           [  OK  ]
    ```

6. ウェブブラウザでJenkinsにアクセスします。EC2のインスタンス生成時に8080番ポートをオープンしておく必要があります。「http://(IP address):8080」のURLにアクセスし、指示に従いパスワードを入力します。おすすめのPluginをインストール後、以下の「Jenkinsへようこそ！」が表示されればインストール成功です。
    
    ![Jenkins.png](https://qiita-image-store.s3.amazonaws.com/0/107056/1cfd0258-b829-8199-2019-5b4a6692ce8a.png)

## Jenkinsの起動設定
1. chkconfig コマンドを使用して、システムがブートするたびに Jenkinsが起動するように設定します。

    ```bash
    [ec2-user ~]$ sudo chkconfig jenkins on
    ```

2. 起動設定を確認します。

    ```bash
    [ec2-user ~]$ sudo chkconfig --list jenkins
    jenkins         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    ```

3. EC2インスタンスを再起動して、Jenkinsにアクセスできることを確認しておきます。

## Jenkinsの設定  

1. JenkinsのURLを http://(ip address):8010/jenkins/** にする方法です。  
    　  
    + Tomcat(port番号8080)とJenkinsと同じサーバで動作させたい。  
    + JenkinsはTomcat上ではなくて、daemonで実行したい。  
    + URLに*/jenkins/*をつけて分かりやすくしたい。  

といった場合は、以下を参考にしてください。  

+ URLとportの変更  

    ```bash
    [ec2-user ~]$ cd /etc/sysconfig
    [ec2-user ~]$ sudo vi jenkins
    ```

    ```:/etc/sysconfig/jenkins
    JENKINS_PORT="8010"
    JENKINS_ARGS="--prefix=/jenkins"
    ```

+ AWSのポートを解放する  
    Jenkinsポート"8010"を開放する。  

    ```
    AWSマネージメントコンソール  
    → EC2  
    → セキュリティグループ  
    → EC2にアタッチしているセキュリティグループを選択
    → インバウンド → 編集 → ルールの追加
    　　・タイプ：カスタム TCP ルール
    　　・プロトコル：TCP
    　　・ポート範囲：8010
    　　・送信元：任意の場所 0.0.0.0/0
    → 保存
    ```

+ Jenkinsを再起動させる    
    Jenkinsを再起動させると以下の `http://(ip address):8010/jenkins/` でアクセスできるようになります。  

    ```bash
    [ec2-user ~]$ sudo service jenkins restart
    ```
    　  
## 参考URL
[Jenkins Installガイド](https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions "Jenkins Installガイド")