【SpringBoot】開発環境作成（Jenkins自動デプロイ）

SpringBootの開発環境作成4回目です。
今回はJenkins自動デプロイします。
Jenkinsデプロイ完了後記事書いてるので、もしかすると抜けている部分があるかもしれませんがご了承ください。


## 作成内容
[①Springプロジェクト作成](https://qiita.com/nmaolks/items/ac3860d78822d52bb81c)
[②BitBucketプッシュ](https://qiita.com/nmaolks/items/43dc670b6184d643c0b1)
③VPSにデプロイ
**④Jenkins自動デプロイ**

## 処理の流れ
①Jenkinsインストール
②Jenkins初期設定
③Jenkins SSH設定
④BitBucket設定
⑤Jenkinsジョブ作成

## Jenkinsインストール
前提としてJavaをインストール必要があります。
Javaのバージョン確認します。
`java -version`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/26bb095a-28db-4754-befd-8fa9e01008d1.png)

◇リポジトリ追加
Jenkinsインストール前にリポジトリ追加します。
`$ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate`
`$ rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key`

Jenkinsインストールします。
`$ yum install jenkins`

Jenkins起動＆自動起動設定します。
`$ systemctl start jenkins`
`$ systemctl enable jenkins`
`$ systemctl status jenkins`

## Jenkins初期設定
以下ディレクトリで初期パスワードを確認できます。
`$ less /var/lib/jenkins/secrets/initialAdminPassword`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/db794f7f-7640-6c5a-992a-251f8e65c971.png)

「Install suggested plugins」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/962d2564-e003-ab6f-200f-48a0ffca2119.png)

自分の好きなユーザ名、パスワード等設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/495f8996-a4f4-5706-c3b2-cbf9795c42e1.png)

こちらはデフォルトで進みます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/fa1e7813-ebf4-590a-5788-a4a64480b358.png)

設定完了です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/7bde4664-eaeb-426b-826a-3d9ed5e357f8.png)

## Jenkins SSH設定

.sshフォルダを作成
`$ /var/lib/jenkins/.ssh`

SSH鍵作成
`$ ssh-keygen`

以下の質問が来ますので、
`Enter file in which to save the key (/root/.ssh/id_rsa):`

こちらを入力します。後の質問はそのまま変更なしで進めてください
 `/var/lib/jenkins/.ssh/id_rsa`

上記完了後、2つのファイルが作成されます
`id_rsa` `id_rsa.pub`

次にauthorized_keysを作成
`$ cat id_rsa.pub >> authorized_keys`

`.ssh`フォルダを権限700 & 管理ユーザ変更します
`$ chown jenkins:jenkins .ssh`
`$ chmod 700 .ssh`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/debc2b3f-0ccd-ec41-e542-d86b24e1c3d5.png)

`.ssh`フォルダ内のSSH鍵を権限600 & 管理ユーザ変更します
`$ chown jenkins:jenkins [SSH鍵名]`
`$ chmod 600 [SSH鍵名]`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/69c72301-a8ef-8ed8-53b5-166b05cf94ec.png)

## BitBucket設定
次はBitBucketの設定をします。まずはアクセスキーの設定です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/ca098cc4-4845-209e-b375-61efd298ce57.png)

Keyに「authorized_keys」の中身をコピーします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/6e4dad8c-fb9f-a878-b579-c62c37ecd61a.png)

Webhookの設定をします
黒枠の部分はJenkinsのURL＆ポートを設定します
`bitbucket-hook/`をつけることでJenkinsに通知してくれます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/13fa093e-3249-4535-4868-72b9bb55a43b.png)

## Jenkinsジョブ作成

BitBucketのプラグイン導入します
こちらを導入していないとWebhookの通知を受け付けません
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/ed012e99-59d6-0bff-4752-4a2861125543.png)

Jenkinsのジョブを「SpringExample_develop」で作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/d937065e-7304-bd39-bfd9-38328f2bd79a.png)

ビルドの破棄を設定しています。
残しすぎるとエラーがでるので今回５つです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/3b6475d3-2582-93da-a6ae-841a40bf7989.png)

GitのリポジトリURLにBitBucket＞クローンの作成＞SSHから以下のようにURLをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/ab516908-9160-f32e-7d93-dfa9e50f52c2.png)

上記リポジトリ指定時に「Permission denied (public key) 」のエラー内容が出た場合は一度Jenkinsを入れているサーバからBitBucketにアクセスする必要があります

Jenkinsユーザに切り替え
`$ git@github.com:nmaolks/FunctionManager.git`

`$ git ls-remote -h git@bitbucket.org:[USER]:[APP_PASS]/springexample.git HEAD`

ブランチを指定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/d8dcba95-4341-b17f-c73e-aec0b2ff0194.png)

BitBucketのプッシュと受けとる為にチェックを入れます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/bc39995d-5c31-69a3-5532-13f20a19bc54.png)

「use Gradle Warapper」「Make gradlew executable」にチェックを入れる
Gradleでclearn & build(testは外す)を行います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/619f39d4-ec24-d990-beda-90d704a1295a.png)

ビルド後にJarファイルを`build/libs/`に成果物に保存します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/a3a370b5-7071-73d0-9dd5-44b6edfa0d65.png)

JDKをJenkinsを置いているサーバに配置しJAVA_HOMEを設定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234354/3b545110-5675-bd98-dd9f-2c7283e410a3.png)

上記内容で設定完了です。