SpringBootの開発環境作成4回目です。
今回はJenkins自動デプロイします。
Jenkinsデプロイ完了後記事書いてるので、もしかすると抜けている部分があるかもしれませんがご了承ください。
作成内容
①Springプロジェクト作成
②BitBucketプッシュ
③VPSにデプロイ
④Jenkins自動デプロイ
処理の流れ
①Jenkinsインストール
②Jenkins初期設定
③Jenkins SSH設定
④BitBucket設定
⑤Jenkinsジョブ作成
Jenkinsインストール
前提としてJavaをインストール必要があります。
Javaのバージョン確認します。
java -version
◇リポジトリ追加
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
「Install suggested plugins」を選択
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
.ssh
フォルダ内のSSH鍵を権限600 & 管理ユーザ変更します
$ chown jenkins:jenkins [SSH鍵名]
$ chmod 600 [SSH鍵名]
BitBucket設定
次はBitBucketの設定をします。まずはアクセスキーの設定です
Keyに「authorized_keys」の中身をコピーします
Webhookの設定をします
黒枠の部分はJenkinsのURL&ポートを設定します
bitbucket-hook/
をつけることでJenkinsに通知してくれます
Jenkinsジョブ作成
BitBucketのプラグイン導入します
こちらを導入していないとWebhookの通知を受け付けません
Jenkinsのジョブを「SpringExample_develop」で作成します
ビルドの破棄を設定しています。
残しすぎるとエラーがでるので今回5つです。
GitのリポジトリURLにBitBucket>クローンの作成>SSHから以下のようにURLをコピーします。
上記リポジトリ指定時に「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
BitBucketのプッシュと受けとる為にチェックを入れます
「use Gradle Warapper」「Make gradlew executable」にチェックを入れる
Gradleでclearn & build(testは外す)を行います
ビルド後にJarファイルをbuild/libs/
に成果物に保存します
JDKをJenkinsを置いているサーバに配置しJAVA_HOMEを設定します
上記内容で設定完了です。