GitにコミットされたらJenkinsのJobが動くようにしてみる

前回の続きです。
※[GitとJenkinsをローカルサーバー(CentOS7)上に構築して連携してみる](https://qiita.com/moukuto/items/141b447505e5bdf1d4c3)

GitとJenkinsの連携はできましたので、GitにコミットされたらJobが動作するようにしてみました。
期待する動作
①Gitにコミット
②JenkinsのJobが稼働
③コミットされたGitからpullして最新のモジュールを取得

#環境
・Jenkinsサーバー(192.168.11.95)
　CentOS 7.6.1810
　Jenkins 2.150.2

・Gitサーバー(192.168.11.96)
　CentOS 7.6.1810
　git 1.8.3.1

#Gitのpull先を作成
連携されているかが簡単に確認できるように、pull先をApacheのDocumentRoot配下にした。
・Apacheインストール

```
yum install -y httpd
systemctl start httpd
systemctl enable httpd
```
・コミットされたGitリポジトリからpullする先のリポジトリ作成

```
cd /var/www/html
mkdir git-test
cd git-test
git init
git remote add origin  /root/local
git pull origin master
```
これで、/var/www/html/git-test配下に、/root/local配下と同様のファイルが配置される。
そして、
http://192.168.11.96/git-test
にて、配置されているファイルの一覧が確認できる。

#JenkinsでのJob作成
・設定画面へ進む
"新規Job作成"をクリック
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/a75a48a7-f1da-ad31-289d-3f824a177eca.png)
・名前設定
適当な名前を入力し、"フリースタイル・プロジェクトのビルド"を選択し次へ
![キャプチャ1.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/5fe9a428-c4ef-fb51-f772-b0011b15dd14.png)
・管理先リポジトリ
![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/64622052-3d14-f835-800b-893cac3e6532.png)
※認証情報などは前記事参照ください。
・ビルド・トリガ
"SC<をポーリング"を選択
![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/1ea98024-9d62-34a0-4f32-7c4baf1dbf53.png)
・ビルド内容
"シェルの実行"を選択し、
ssh root@192.168.11.96 "cd /var/www/html/git-test; git pull origin master"
と入力
![キャプチャ4.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/2b89147c-208c-4931-8c23-62df0347cd77.png)

#結果
・動作確認
コンソール出力を確認すると、"FAIRULE"と出ていた。。。
![キャプチャ5.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/a6caba40-8f6d-0125-1146-04152cdea794.png)
・原因調査
jenkinsサーバーにて念のためssh疎通を確認すると正常終了した。

```
[root@jenkins ~]# ssh root@192.168.11.96 "cd /var/www/html/git-test; git pull origin master"
From /root/local
 * branch            master     -> FETCH_HEAD
Already up-to-date.
```
JenkinsのJobにて"シェルの実行"で実行ユーザーを確認してみると、jenkinsユーザーであることが発覚。。。
![キャプチャ6.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/696723b2-9b5e-7803-b5cf-41c6ba9675b8.png)
そのため、jenkinsユーザーからsshしてrootログインできるように変更。
#対処
楽にできそうな対応しました。
・jenkinsユーザーの設定変更
初期設定ではjenkinsユーザーにスイッチできないようになっているため、スイッチできるように変更

```
vi /etc/passwd
jenkins:x:996:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false
↓
jenkins:x:996:994:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
※最後を"bash"にしただけ
```
・鍵の作成と配置

```
[root@jenkins etc]# su - jenkins
Last login: Wed Feb  6 21:27:30 JST 2019 on pts/0
-bash-4.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
※全部空欄でEnter
-bash-4.2$ ssh-copy-id root@192.168.11.96
```
これでjenkinsユーザーでrootログインできるようになっている。

#リトライ
・即時実行
"ビルド実行"をクリック
![キャプチャ7.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/c42bf520-ff60-b3f8-20e8-c4e69195a206.png)

#結果(2回目)
![キャプチャ8.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/43e258e2-f0e0-a274-f9ff-781e6d349d6f.png)
SECCESS！！

#本番実行
Jobが稼働することを確認したので、実際にコミットしてみてpullされるかを確認する
・事前確認
![キャプチャ9.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/f934aa2e-8d30-5d5e-dcad-0665285c4b2f.png)
・コミット

```
[root@git local]# pwd
/root/local
[root@git local]# touch test3.txt
[root@git local]# git add .
[root@git local]# git commit -m "Job test"
[master 216860f] Job test
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test3.txt
```
・結果確認
![キャプチャ10.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/df11596c-3c9a-7a81-4134-2f84271cd4e1.png)
しっかりとpullされた！

#さいごに
今回、GitとJenkins共に初めて触りまして、どちらも理解できていないことを痛感しましたので、指摘あれば是非頂ければと思います。