Jenkinsインストールと初期設定メモ

Jenkinsのインストール&初期設定方法の備忘メモ
インストール先OSはCentOS7

# 手順
## 1. JDKのインストール
JDKをインストールする。
OpenJDKをインストールする場合の手順は[CentOS7へのOpenJDKインストールあれこれ](https://qiita.com/yuuman/items/a9e89d7d4899cbdaed44)を参照。

## 2. Gitのインストール
CentOSで最新バージョンを利用する場合は、ソースからビルドする方法でインストールする。
インストール手順は[こちら](https://git-scm.com/book/ja/v1/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)。

古いバージョンでよければ、yumコマンドからもインストール可能

```shell
$ sudo yum install git
```

## 3. ビルドツールのインストール
### 3.1 Mavenのインストール
[Maven公式サイト](https://maven.apache.org/download.cgi)からバイナリファイルをダウンロード・解凍する。
解凍後任意のフォルダに移動させ、alternatives に登録する。

```shell 
# バイナリファイルを解凍する
$ tar xzvf apache-maven-3.5.4-bin.tar.gz
# 任意のフォルダに解凍したフォルダを移動させる
$ mv apache-maven-3.5.4 /usr/lib/apache-maven
# alternativesに登録
$ alternatives --install /usr/bin/mvn mvn /usr/lib/apache-maven/apache-maven-3.5.4/bin/mvn 1
# mavenのインストール確認
$ mvn -version
```

### 3.2 Gradleのインストール
[Gradle公式サイト](https://gradle.org/releases/)のInstall manuallyの手順に従ってインストールする。
公式では環境変数にPATHを設定する方法が記載されているが、今回はalternativesに登録する。

```shell
# 解凍先フォルダを作成
$ mkdir /usr/lib/gradle
# zipファイルを解凍
$ unzip -d /usr/lib/gradle gradle-4.10.2-bin.zip
# alternativesに登録
$ alternatives --install /usr/bin/gradle gradle /usr/lib/gradle/gradle-4.10.2/bin/gradle 1
# Gradleのインストール確認
$ gradle -v
```

## 4. Jenkinsのインストール
Jenkinsのインストール方法は[公式サイト](https://pkg.jenkins.io/redhat-stable/)に記載されているコマンドを実行する。
また、rpmファイルを[公式サイト](https://pkg.jenkins.io/redhat-stable/)から直接ダウンロードしてインストールする方法をある。

インストール完了後はJenkinsを起動させ、ブラウザから http://localhost:8080 にアクセスして初期設定を行う。

```shell:Jenkinsのインストール(yum)
# yumリポジトリに追加
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# rpmパッケージの公開鍵をインポート
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# Jenkinsのインストール(yum)
$ sudo yum install jenkins
```

```shell:Jenkinsのインストール(rpm)
# Jenkinsのインストール(rpmファイル)
$ sudo rpm -ivh jenkins-2.147-1.1.noarch.rpm
```

```shell:Jenkinsの起動
# Jenkinsの起動
$ sudo service jenkins start
Starting jenkins (via systemctl):                          [  OK  ]

# 他にもsystemctlから起動する方法もある
$ sudo systemctl start jenkins
```

下記設定項目については、[Jenkinsのwiki](https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions)に詳細が記載されているため必要に応じて設定すること。

* ファイアウォール設定　※別のホストからJenkinsにアクセスする場合に必要
* chkconfigによるJenkinsサービスの自動起動設定

## 5. 初期アクセス時の設定
ブラウザからJenkinsに初期アクセスした場合、下記画面が表示されinitialAdminPasswordの入力を求められる。
そのため、```/var/lib/jenkins/secrets/initialAdminPassword```を確認し、表示された初期パスワードのコピー＆パスワード入力フォームにペーストして[Continue]ボタンを押す。

```
$ cat /var/lib/jenkins/secrets/initialAdminPassword
284cb2ad483c4971b10490cfdc9a7e3e
```

![image01.png](https://qiita-image-store.s3.amazonaws.com/0/177076/a7697978-1373-a70a-8ec4-014362d5dbbb.png)

次にプラグインのインストール確認画面が表示される。
自分で選択するといろいろインストール漏れがありそうなので、「Install suggested plugins」を選択する。

![image02.png](https://qiita-image-store.s3.amazonaws.com/0/177076/e63d6711-51c1-e4a1-01b4-b6920f2e47ff.png)

「Install suggested plugins」を選択すると、自動的にプラグインのダウンロード＆インストールが始まるのでインストールが完了するまで待つ。

![image03.png](https://qiita-image-store.s3.amazonaws.com/0/177076/f8a1c735-22fd-d0e3-6636-9642fbe499b8.png)

プラグインのインストールが完了すると、初期Adminユーザ作成画面が表示されるので必要事項を入力して[Save and Continue]ボタンを押す。

![image04.png](https://qiita-image-store.s3.amazonaws.com/0/177076/baefa56f-2829-6c04-61d4-432d2ec242ff.png)

![image05.png](https://qiita-image-store.s3.amazonaws.com/0/177076/54f17295-4c0d-7632-85cf-c68611f40ab9.png)

これで初期設定は完了なので、[Starg using Jenkins]ボタンを押すとJenkinsのホーム画面が表示される。

![image06.png](https://qiita-image-store.s3.amazonaws.com/0/177076/f64a210c-cc61-ff81-6249-b219b79a9171.png)

![image07.png](https://qiita-image-store.s3.amazonaws.com/0/177076/7bcd7739-7972-f8b7-5746-8d1ad81d73a6.png)

初期設定完了。

## 6. Global Tool Configuration
ビルド時に利用するビルドツールやJDKを追加し保存する。
Jenkinsトップのサイドバーから[Jenkinsの管理]->[Global Tool Configuration]を選択する。

### 6.1 JDKの追加
JDKのパスをalternativesコマンドで確認し、追加する。

```shell
alternatives --config javac

2 プログラムがあり 'javac' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/bin/javac)
   2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/bin/javac)
```

**JDKの追加画面**
![image08.png](https://qiita-image-store.s3.amazonaws.com/0/177076/2a28f96b-0d00-3689-90d7-0eb7003c5648.png)


※JDKを複数設定することでJenkinsジョブ設定画面でビルドするJDKがプルダウンで選択できるようになる。
![image09.png](https://qiita-image-store.s3.amazonaws.com/0/177076/01fb7fed-bfbf-6283-c6c8-54aecc0e19d5.png)


### 6.2 Gradle/Mavenの追加
Gradle/Mavenのパスをalternativesコマンドで確認し、ビルド時に利用するGradle/Mavenのパスを追加する。

```shell
# Gradleのパスを確認
$ alternatives --config gradle

1 プログラムがあり 'gradle' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/lib/gradle/gradle-4.10.2/bin/gradle

# Mavenのパスを確認
$  alternatives --config mvn

1 プログラムがあり 'mvn' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/lib/mvn/apache-maven-3.5.4/bin/mvn
```
**Gradleの追加画面**
![image10.png](https://qiita-image-store.s3.amazonaws.com/0/177076/24f73807-5571-9cce-7591-c805a8682db7.png)

**Mavenの追加画面**
![image11.png](https://qiita-image-store.s3.amazonaws.com/0/177076/b6551114-456f-f4cb-fbce-c0be5820bd2c.png)

## 7. プラグインのインストール
あると便利なプラグインをインストールする（自分の場合）。
[Jenkinsの管理]->[プラグインの管理]を選択し、利用可能一覧から検索&インストールを行う。

* [PegDown Formatter](https://wiki.jenkins.io/display/JENKINS/PegDown+Formatter+Plugin)：Jenkinsジョブの説明をマークダウン記法で記述できるようにするプラグイン
 * インストール後、[Jenkinsの設定]->[グローバルセキュリティの設定]->[マークアップ記法]でPegDownを選択で利用可能
* [AnsiColor](https://wiki.jenkins.io/display/JENKINS/AnsiColor+Plugin)：Jenkinsのログを色付けして見やすく表示してくれるプラグイン
 * Jenkinsジョブの設定でColor ANSI Console Outputが追加されるのでチェックを入れると有効になる 
* [JobConfigHistory](https://wiki.jenkins.io/display/JENKINS/JobConfigHistory+Plugin)：Jenkinsジョブ設定に変更があった場合、変更差分を見ることができるプラグイン
* [Monitoring](https://wiki.jenkins.io/display/JENKINS/Monitoring)：Jenkinsの稼働状況をモニタリングできるプラグイン
 * [Jenkinsの設定]-> [Monitoring of Jenkins master]で確認できる
* [Build Trigger Badge](https://wiki.jenkins.io/display/JENKINS/Build+Trigger+Badge+Plugin)：ビルド実行のトリガをバッジ（アイコン）で確認できるようにするプラグイン
* [Extensible Choice Parameter](https://wiki.jenkins.io/display/JENKINS/Extensible+Choice+Parameter+plugin)：パラメータ付きビルドで利用する選択パラメータを拡張するプラグイン

## 8. ジョブの作成
構築したJenkinsが正しく動作するかを確認するため、テストジョブを作成し実行する。

[新規ジョブ作成]を選択し、ジョブ作成画面に遷移する。
ジョブ作成画面で[フリースタイル・プロジェクトのビルド]を選択し、ジョブ名を入力後[OK]ボタンを押す。

![image12.png](https://qiita-image-store.s3.amazonaws.com/0/177076/03fefa7f-0b39-abeb-bca0-bf37dafd0837.png)

**General**
![image13.png](https://qiita-image-store.s3.amazonaws.com/0/177076/6023a2fa-4a75-e835-96a2-3e663257ebeb.png)

**ソースコード管理**
Githubのリポジトリから資材を取得するため[Git]を選択し、リポジトリURLと認証情報を設定する。
![image14.png](https://qiita-image-store.s3.amazonaws.com/0/177076/11fadb63-d5dd-8cb1-72e6-368eeee6e7b8.png)

**ビルド・トリガ/ビルド環境**
![image15.png](https://qiita-image-store.s3.amazonaws.com/0/177076/ad91595a-b884-0bf2-6cc8-a741598829ff.png)

**ビルド/ビルド後の処理**
[ビルド手順の追加]->[シェルの実行]を選択しスクリプトを入力する。
![image16.png](https://qiita-image-store.s3.amazonaws.com/0/177076/6cd30fd6-ee9e-7a80-013e-16e5585be6c2.png)


ジョブの作成が完了したらビルドを実行し、エラーとならなければ基本的なJenkins環境の構築は完了。
その後は必要なジョブの追加等を行い、スムーズに開発が進められる環境を整備していく。