(CI/CD) Jenkinsでデプロイを自動化する手順

jenkins-deploy-source-automatically

 

ローカルのPC(MacBookAir)に入れたJenkinsを使って、
リモートサーバへのデプロイを自動化できたのでそれをシェア

以前まではFTPクライアント使ってドラッグアンドドロップとかしていたが、
jenkinsにしてからかなりデプロイが楽ちん、かつミスなどもなくなった

 

JenkinsをローカルPCにインストール

まずはJenkinsをローカルのPCにインストールする。
JenkinsをローカルPCにインストールする手順は、下記記事を参考にして実行して欲しい。

 

Jenkinsのジョブの設定をしていく

Jenkinsのインストールが終わったら、
次はジョブと言うものを設定していく。

 

ジョブとは

Jenkinsは実行したいタスクを、
「ジョブ」という単位で、設定を行っていく。

jenkins-job-image

 

今回例として設定するジョブは、
「リモートサーバにあるソース(Git管理)を、最新化する」というジョブだ。

jenkinsのジョブに、
リモートサーバがGithubにある最新のソースを取得しに行くと言う設定をしておくことで、
ジョブを実行するだけでソースが最新化されると言う仕組みを構築する。

 

ジョブ設定手順

以下簡単に設定手順。

まずはJenkinsを立ち上げて、ブラウザから管理画面にアクセス
するとこんなスタート画面なので、「新しいジョブ」のリンクをクリック

jenkins-console

 

すると以下のようなジョブの設定画面が出る。
ジョブ名を入力し、「フリースタイル・プロジェクトのビルド」を選択。
そしたら「OK」をクリック。

jenkins-setup-job

 

OKクリック後は下記のような画面になる。
管理項目と書いた赤枠部分が、今回作成するジョブに対しての細かい設定項目だ。
必要な設定項目を設定していく。

jenkins-job-setup

 

最初に「ソースコード管理」のタブをクリックする。
んで、ジョブ実行時最新化したいgitのリポジトリのURLを入力する。

 

次に「ビルド環境」のタブをクリックする。
「ビルド手順の追加」の中から「シェルの実行」を選択

 

すると何やらシェルスクリプトを書けと枠が出てくる。
そこに今回ジョブで実行したい内容を書く。

 

詳しい説明は割愛するが、今回は、
下記のような流れでソース最新化のジョブとする。

 

ソース最新化の流れ
  1. sshでリモートサーバにログイン
  2. Gitでソース管理している階層に移動
  3. git pullしてソース最新化

 

下記のようにシェルを記述する。

ssh ユーザ@ホスト "cd 移動先パス; git pull origin master"

 

簡単なスクリプトだが、これでジョブを実行するたびに、ソースを最新化してくれる。

一点、sshログイン時にパスワードを聞かれないように、
下記の記事で「リモートサーバに公開鍵登録」をやっておいてほしい。

 

スクリプトを記述したら画面左下の「保存」をクリック

 

すると、ジョブの設定が完了し、今作ったジョブの管理画面に移動する。
あとはジョブを実行するだけ。

 

ジョブを実行してみる!

上記でジョブの設定は完了。
ではジョブを実行して設定がうまくいっているか確認してみよう。

今回は以下の手順で確認できる

 

ソース最新化確認手順
  1. ローカルで開発したソースをGitにプッシュ
  2. ジョブを実行
  3. サーバのソースにアクセスし、最新化されていることを確認

 

ソースを変更してGitにpush


 

んでジョブ実行。
ジョブの管理画面左の「ビルド実行」をクリックするとジョブが実行される。

 

ソースの最新化ができているか、確認、

 

反映された!

 

まとめ

Jenkinsを使うとデプロイが楽チン

今回はソースが一個だからいいけど、毎回ソースを改修したらデプロイするの面倒だし、
数が多いと多分デプロイ漏れとかもあると思う。

Jenkinsならジョブ実行するだけで超絶簡単で、ミスもない。
これだけでも個人としては十分助かっている。

 

ちなみに本当はGitのwebhookと連携して、pushした瞬間に自動でジョブを実行みたいなこともできるのだが、今回ローカルにJenkinsを導入したことにより、その辺の問題を解決できず、挫折した

機会があれば、やってみたい

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。