ローカルのPC(MacBookAir)に入れたJenkinsを使って、
リモートサーバへのデプロイを自動化できたのでそれをシェア
以前まではFTPクライアント使ってドラッグアンドドロップとかしていたが、
jenkinsにしてからかなりデプロイが楽ちん、かつミスなどもなくなった。
JenkinsをローカルPCにインストール
まずはJenkinsをローカルのPCにインストールする。
JenkinsをローカルPCにインストールする手順は、下記記事を参考にして実行して欲しい。
Jenkinsのジョブの設定をしていく
Jenkinsのインストールが終わったら、
次はジョブと言うものを設定していく。
ジョブとは
Jenkinsは実行したいタスクを、
「ジョブ」という単位で、設定を行っていく。

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

jenkinsのジョブに、
リモートサーバがGithubにある最新のソースを取得しに行くと言う設定をしておくことで、
ジョブを実行するだけでソースが最新化されると言う仕組みを構築する。
ジョブ設定手順
以下簡単に設定手順。
まずはJenkinsを立ち上げて、ブラウザから管理画面にアクセス。
するとこんなスタート画面なので、「新しいジョブ」のリンクをクリック。

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

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

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

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

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

詳しい説明は割愛するが、今回は、
下記のような流れでソース最新化のジョブとする。
- sshでリモートサーバにログイン
- Gitでソース管理している階層に移動
- git pullしてソース最新化

下記のようにシェルを記述する。
ssh ユーザ@ホスト "cd 移動先パス; git pull origin master"
簡単なスクリプトだが、これでジョブを実行するたびに、ソースを最新化してくれる。
一点、sshログイン時にパスワードを聞かれないように、
下記の記事で「リモートサーバに公開鍵登録」をやっておいてほしい。
スクリプトを記述したら画面左下の「保存」をクリック

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

ジョブを実行してみる!
上記でジョブの設定は完了。
ではジョブを実行して設定がうまくいっているか確認してみよう。
今回は以下の手順で確認できる
- ローカルで開発したソースをGitにプッシュ
- ジョブを実行
- サーバのソースにアクセスし、最新化されていることを確認
ソースを変更してGitにpush
んでジョブ実行。
ジョブの管理画面左の「ビルド実行」をクリックするとジョブが実行される。

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

反映された!
まとめ
Jenkinsを使うとデプロイが楽チン。
今回はソースが一個だからいいけど、毎回ソースを改修したらデプロイするの面倒だし、
数が多いと多分デプロイ漏れとかもあると思う。
Jenkinsならジョブ実行するだけで超絶簡単で、ミスもない。
これだけでも個人としては十分助かっている。
ちなみに本当はGitのwebhookと連携して、pushした瞬間に自動でジョブを実行みたいなこともできるのだが、今回ローカルにJenkinsを導入したことにより、その辺の問題を解決できず、挫折した
機会があれば、やってみたい