jenkinsによるCI/CD検証環境の作成

#概要
オンプレ仮想環境（CentOS）にJenkinsをインストールし自動テスト環境を構築する。

#環境
OS：CentOS7.6
Jenkins：2.220-1.1
プロキシ環境下

#Jenkinsセットアップ

```Jenkinsのパッケージリポジトリを追加
# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
↓Jenkinsが提供するパッケージの検証を行うための鍵を追加
# rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
↓Jenkinsをインストール
# yum install jenkins
↓Jenkinsを起動
# systemctl start jenkins
```
##systemctl start jenkinsが失敗する場合
→JDK1.8.0をインストールし、Jenkinsの起動ファイルにPATHを追加


```
# yum install -y java-1.8.0-openjdk
```


```shell:/etc/init.d/jenkins
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/lib/jvm/java-8-openjdk-amd64/bin/
```


設定ファイルの再読み込み、起動

```
# systemctl daemon-reload jenkins
# systemctl start jenkins
```




**※エラー詳細**

```bash

# systemctl start jenkins
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
```


```bash

# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since 金 2020-02-14 09:22:24 JST; 48min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 21387 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

 2月 14 09:22:24 node01 systemd[1]: Starting LSB: Jenkins Automation Server...
 2月 14 09:22:24 node01 runuser[21392]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
 2月 14 09:22:24 node01 jenkins[21387]: Starting Jenkins bash: /usr/bin/java: そのようなファイルやディレクトリはありません
 2月 14 09:22:24 node01 jenkins[21387]: [失敗]
 2月 14 09:22:24 node01 systemd[1]: jenkins.service: control process exited, code=exited status=1
 2月 14 09:22:24 node01 systemd[1]: Failed to start LSB: Jenkins Automation Server.
 2月 14 09:22:24 node01 systemd[1]: Unit jenkins.service entered failed state.
 2月 14 09:22:24 node01 systemd[1]: jenkins.service failed.
Warning: jenkins.service changed on disk. Run 'systemctl daemon-reload' to reload units.
```


##ここからはGUIでのセットアップ
ブラウザより、**[自身のIP:8080]**にアクセス
初回アクセス時には不正アクセス防止のためロックがかかっている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294638/526ae821-1067-6b1c-8477-bfe7ba81b5aa.png)

解除には「/var/lib/jenkins/secrets/initialAdminPassword」に記載されているアンロック用のパスフレーズを入力する


その後、プロキシー設定の要否やプラグインのインストールタイプを聞かれるため、それぞれ必要に応じて設定
ユーザ名、パスワード、メールアドレスなどを登録すると初期セットアップは完了。
ログイン画面が表示されたら、先ほど設定したユーザ名、パスワードにてログイン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294638/4b15f2f1-133a-fe75-3d50-516f175b77a3.png)


#ジョブ作成
Jenkinsログイン後、左ペインより「新規ジョブ作成」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294638/93ecebb9-c6cd-4eb9-b165-b99de2dcccef.png)

「Enter an item name」欄に作成したいジョブ名をいれ、「パイプライン」を選択しOKをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294638/efc3cc10-4eb9-d304-5eb8-e77cad2e252d.png)

※今回は検証目的の為、詳細な設定は省略する

「Pipeline」欄に実行したい処理を**DSL**（Groovyというプログラミング言語をベースとした独自言語）にて記載する。
「Pipeline Syntax」にてよく使うコードがライブラリ化されているので、今回はこれを利用する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294638/abd025e3-3176-fb8e-4698-36c7290356a5.png)


今回はGitのソースコードのチェックアウトを行うため、下記の設定を行う。

Sample Step：checkout: Check out from version control
SCM：Git
リポジトリURL：GitのリポジトリURL

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294638/db1c19ae-d043-4fca-3fb3-4dcd082a5007.png)



今回はここまで。