GitとJenkinsをローカルサーバー(CentOS7)上に構築して連携してみる

GitHubを利用せずに、ローカルのみでCI環境を構築するにあたって、ひとまず連携までしてみました。

#構成
・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

#環境設定
・Firewall,SELinux無効化

```
systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config ←「disabled」に変更
```

#Gitサーバー構築
・gitインストール

```
yum -y install git
```

・初期設定

```
git config --global user.name <ユーザ名>
git config --global user.email <メールアドレス>
git config --list ←設定確認
```

・リモートリポジトリの作成

```
mkdir /var/lib/git
mkdir /var/lib/git/project.git
cd /var/lib/git/project.git
git --bare init
 ←　リモートリポジトリ確認
```

・ローカルリポジトリの作成

```
mkdir /root/local
cd /root/local
git init
echo test > test #テスト用のファイルです
git add .
git commit -m "first commit"
```
・ローカルリポジトリにリモートリポジトリを追加

```
git remote add origin /var/lib/git/project.git
```

#Jenkinsサーバー構築
・OpenJDKをインストール

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

・yumリポジトリ追加

```
yum -y install wget
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
```

・RPMパッケージの公開鍵をインポート

```
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
```
※インストールに使うJenkinsのRPMパッケージに問題がないか₍改ざんされてないか₎をチェックするために使用

・Jenkinsインストール

```
yum install jenkins
```

・起動設定

```
systemctl start jenkins
systemctl enable jenkins
```

・鍵の作成と配置

```
[root@jenkins ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
※全て空欄
[root@jenkins ~]# ssh-copy-id root@192.168.11.96 ←Gitサーバーへ配置
```

・接続確認

```
yum -y install git
git ls-remote -h ssh://root@192.168.11.96/var/lib/git/project.git 
※エラーが出力されなければOK
```

・秘密鍵確認

```
cat /root/.ssh/user_rsaid_rsa
```

・Jenkins初回ログイン用パスワードを確認

```
cat /var/lib/jenkins/secrets/initialAdminPassword
```

#Jenkins初期設定(GUI)
・初回設定画面にアクセス
http://192.168.11.95:8080

・ログイン
テキストボックスに、確認した「initialAdminPassword」の内容を張り付け
![キャプチャ1.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/8d60c069-00bc-75a9-ced2-9658e15b09f3.png)
・推奨プラグインをインストール
"Install suggested plugins”をクリック
![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/8bba4646-0899-958d-85b9-8718f91b9dcc.png)
・管理ユーザー作成
![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/37b20ae5-76dc-550f-48e4-0264ed1950c7.png)

#Jenkins Git連携
・設定画面へ進む
"新規Job作成"をクリック
![キャプチャ4.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/cc1d9907-3007-facc-a337-69709422bd9a.png)
・名前設定
適当な名前を入力し、"フリースタイル・プロジェクトのビルド"を選択し次へ
![キャプチャ5.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/22bc3be5-a4c7-62ce-970a-0c84ebd36f96.png)
・Job設定
ソースコード管理にて、"Git"を選択
"追加"をクリックし、"Jenkins"を選択
![キャプチャ7.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/cf91a5c6-36f6-7e12-0e09-702af9e0e2bc.png)
キャプチャのように設定
※鍵は、上で確認した「/root/.ssh/user_rsaid_rsa」の中身
![キャプチャ8.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/139d7e6e-5136-cd82-4884-1e0af1debc7b.png)
リポジトリURLに、接続確認を行った際の確認先のURLを入力
認証情報のプルダウンで、作成したものを選択
※赤字でエラーが出ないでキャプチャのようになれば成功
![キャプチャ9.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/632f14e3-f9b1-eab5-38c5-2a595a82cdd9.png)
"ビルドするブランチ"を削除
![キャプチャ10.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/8f494fad-ce00-09e5-3ed9-aac763cc7766.png)
”ビルド・トリガ"における、"定期的に実行"を選択し、スケジュールに"H/15 * * * *"と入力
※15分おきにビルド設定
"ビルド環境"における、"コンソール出力にタイムスタンプを追加する"を選択
![キャプチャ11.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/7dfe1580-39d4-9074-3332-eccb4e5b2bda.png)
画面最下部の"保存"をクリック
・Job稼働確認
"ビルド実行"をクリック
![キャプチャ13.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/49334e77-b894-5126-d0ff-ea80444dd5dd.png)
実行されたら履歴が現れるので、"#1"をクリック
![キャプチャ14.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/41bafa5e-1f9a-da7f-4433-21cfeda4b7ba.png)
"コンソール出力"をクリック
![キャプチャ15.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/e265d539-37d6-4f25-a9ed-7c6c5c6016f9.png)
"SUCCESS"となっていることを確認
![キャプチャ16.PNG](https://qiita-image-store.s3.amazonaws.com/0/255858/bb9820b0-0b97-d3f4-858d-2a37c38aa256.png)

#参考
・Git
[Gitのインストールと初期設定](http://hidemium.hatenablog.com/entry/2014/05/04/015051)
[ベアリポジトリとノンベアリポジトリ](http://www.nekotricolor.com/entry/theory-of-bare-and-non-bare-repository-manage-wordpress-themes-with-git)

・Jenkins
[Jenkinsをインストール](https://www.n-novice.com/entry/2017/10/22/160000)
[JenkinsとGitサーバーを連携してビルド環境を構築する。](http://toriaezu-engineer.hatenablog.com/entry/2016/11/19/104432)