目次
自動デプロイとは何か、そしてそのメリットについて知らない方も多いのではないでしょうか。
自動デプロイとは、プログラムの変更を自動的に本番環境に反映させることを指します。
自動デプロイができるようになることで、開発者は時間と手間を節約することができるようになります。
自動デプロイの方法は様々なありますが、今回はJenkinsを使って、GitHubへ自動デプロイを行う方法について詳しく解説ていきます。
自動デプロイとは?
自動デプロイとは何なのか、githubで自動デプロイを行うことにどのようなメリットがあるのか解説していきます。
また自動デプロイに必要なCIツールについても紹介しています。
自動デプロイの定義とメリット
自動デプロイとは、GitHub上のリポジトリに新しいコードをプッシュした際に、自動的にデプロイも行われる仕組みのことです。
まずデプロイとは、GitHub上で管理したり、変更したコードを実際にアプリケーションやウェブサイトなどに反映させることを指します。
gitでバージョン管理をする際、本番サーバーにデプロイするために、リモートリポジトリにpushをしたり、本番サーバーでgit pullをしたりする手順を踏む必要があります。
しかし自動デプロイを設定することで、このようなデプロイに必要な作業を自動化することができます。
具体的には、開発者がGitHubに新しいコードをプッシュすると、自動的にビルド・テスト・デプロイが行われ、最新バージョンがリリースされます。
アプリケーションの新しいバージョンを自動的にデプロイすることで、開発者が手動でデプロイ作業を行う必要をなくすことができ、デプロイにかかる時間と手間を大幅に削減することができます。
またデプロイ作業を手動で行わないため、ヒューマンエラーによる問題をなくすことができ、コードの品質向上にもつながります。
自動デプロイに必要なもの
自動デプロイには、本番環境やステージング環境などのデプロイ先の環境や、GitHubのようなコードの変更履歴を管理するためのバージョン管理システムが必要です。
上記のものに加えて、自動デプロイに特に必要なのは、ビルドやテストを自動化するためのツールである、CIツールです。
CIツールとは、「継続的インテグレーションツール(Continuous Integration Tool)」の略称であり、開発者がコードをプッシュすると、自動的にビルドやテストを実行し、問題がなければデプロイしてくれます。
また、CIツールは、ビルドやテストの結果をダッシュボードやレポートで表示することができ、開発者がコードの品質を確認する際にも役立ちます。
Jenkinsとは
Jenkinsは、自動デプロイをする際に必要となるCIツールの1つです。
ここでは、JenkinsとはどのようなCIツールなのか概要や特徴、インストール方法まで解説していきます。
Jenkinsの概要と特徴
Jenkinsとは、オープンソースで提供されているCIツールであり、ビルドやテスト、デプロイなどの自動化に役立ちます。
Jenkinsは、GitHubなどのバージョン管理システムと連携して、自動的にソースコードを集め、実行可能な状態にビルドしてくれます。
そして、あらかじめ登録されたテストを自動的に実施し、結果をレポートとしてまとめてくれます。
Jenkinsには、以下の4つの特徴があります。
- プラグインが豊富:必要に応じてプラグインを追加することで、機能を拡張できる
- オープンソース:無料で利用可能であり、バグの修正や新しい機能の追加が継続的に行われる
- 設定が簡単:GUIを使った設定が可能で、初心者でも比較的簡単に設定できる
- 様々なプラットフォームに対応::LinuxやWindowsなど、様々な環境でインストール可能
Jenkinsのインストール方法
まずはJenkinsをローカル環境(PC上)にインストールします。
Jenkinsは公式サイトから、使用するOSに合わせたインストーラーを選択するとダウンロードが始まります。
「jenkins.msi」というフォルダのダウンロードが完了したら、フォルダを開き、手順を進めます。
手順を完了すると、以下のリンク(インストール時に変更可能)からJenkinsの起動ページへアクセス可能です。
http://localhost:8080/
初回のJenkins起動時はパスワードを求められます。赤いリンクで記載されているJekinsフォルダの指定箇所でパスワードを確認、入力し「Continue」をクリックします。
ページ遷移時にデフォルトで指定されているプラグインを選択すると、インストールが開始します。
ユーザー名やパスワードなど必要な情報を入力する手続きを進め、以下のページが表示されたらインストールが完了です。
Jenkinsで自動デプロイする設定
aaaa
GitHubとJenkinsの連携方法
Jenkinsのインストールが完了したら、以下の手順でGitHubとJenkinsを連携していきます。
まずは、JenkinsがGitHub からのpushを受け取るためのWebhook機能を追加できるプラグインをインストールします。
サイドメニューの「Jenkinsの管理」から「プラグインの管理」に進み、「Available plugins」の検索欄でGItHubと入力し、表示されたプラグインをインストールします。
またJenkins側で新規ジョブを作成していきます。
作成時の設定画面にて、GitHub projectにチェックマークをいれたら、表示されるフォームにGitHubのURLを設定します。
「ビルド・トリガ」の「GitHub hook trigger for GITScm polling」にもチェックをいれておきましょう。
そして「リポジトリURL」にGitのremoteアドレス、「ビルドするブランチ」にビルド実行するブランチの「*/master」を入力するとJenkinsの設定は完了です。
次にGitHub側でWebhook の設定をしていきます。
「Settings」から「Integration&services」の「Add service」から「Jenkins(GitHub Plugin)」を選択します。
Jenkins hook urlに「http://[JENKINS_HOST]/github-webhook/」を入力すると設定が連携が完了です。
Jenkinsのビルドスクリプトの作成方法
先ほどGitHubとJenkinsの連携時にジョブを作成しましたが、ジョブ作成時にビルドスクリプトを作成する必要があります。
ビルドスクリプトとは、Jenkinsが自動化されたビルドプロセスを実行するために使用されるスクリプトのことです。
ここではJenkinsのビルドスクリプトの作成方法について詳しくみていきましょう。
まずJenkinsのジョブ作成時は「フリースタイル・プロジェクトのビルド」を選択します。
ビルドスクリプトは、「Build Steps」の項目から作成可能です。
「Build Steps」の「シェルの実行」を選択すると表示されるシェルスクリプトに実行したいビルドスクリプトを入力します。
ここでは、自動デプロイのためにGitHubリポジトリからソースコードを取得し、必要なコマンドを実行してデプロイするビルドスクリプトを入力します。
スクリプトの入力が完了したら、「保存」をクリックします。
Jenkinsのビルド結果の確認方法
ここでは、実際にJenkinsで実施したジョブ(ビルド)の結果を確認する方法を紹介していきます。
Jenkinsのダッシュボードからサイドメニューの「ビルド履歴」を選択することで、ビルド結果を確認することができます。
「ビルド履歴」では、ビルドが正常に完了した場合、緑色のアイコンが表示されます。一方、ビルドに問題があった場合は、赤色のアイコンが表示されます。
またJenkinsでは、ビルド結果を自動的に通知することができます。
例えば、ビルドが失敗した場合には、メールやSlackなどのチャットツールで通知を受けることができ、この機能を活用することで、問題が発生した場合に迅速に対処することができます。
Jenkinsのビルド結果は適宜にチェックするようにし、問題が発生した場合は速やかに対処するようにしましょう。
その他の自動デプロイ方法
今回は自動デプロイに必要となるCIツールとして、Jenkinsを利用した例をみてきました。
ここでは、Jenkins以外のCIツールを利用した自動デプロイ方法について詳しく解説していきます。
GitHub Actionsを用いる方法
GitHub Actionsは、Githubが提供するCI/CDサービスであり、Jenkins同様GitHubリポジトリと連携して自動デプロイを行うことができます。
GitHub Actionsを使用して自動デプロイを設定するには、まずGitHubリポジトリにデプロイするコードをアップロードします。
次に、所定のディレクトリに、トリガーの条件やジョブの実行内容、デプロイ先など自動デプロイの手順が記述されたワークフローファイルを追加します。
ワークフローファイルを追加すると、GitHub Actionsが自動的にデプロイを実行します。
GitHub Actionsは、Jenkinsとは異なり、GitHubリポジトリに直接統合されるため、設定が簡単で、特に小規模なプロジェクトには便利なCIツールであるといえます。
CircleClを用いる方法
CircleClは、クラウドサービスとして提供されているCIツールであり、Jenkinsのようなオンプレミス型のCIツールとは違い、環境構築などの手間を抑えることができます。
しかしオープンソース型ではないため、有料プランで利用する必要があるのがデメリットであるといえます。
GitHub側でリポジトリを作成後、CircleCIとGitHubアカウントを紐付けるために、CircleCIのサインアップ画面からGitHubアカウントでログインして承認を行います
CircleCI側で自動デプロイのためのプロジェクトを作成し、設定ファイル等を追加してGitHubと連携ができたら、ジョブを実行し結果を確認します。
まとめ
今回はJenkinsを使ってGitHubへ自動デプロイするための手順と設定方法、またGitHubとJenkinsを連携させる方法や、ビルドスクリプトの作成方法、ビルド結果の確認方法など具体的に解説しました。
自動デプロイは、開発者がコードの変更を行った場合に、その変更を自動的に本番環境に反映させることができる機能です。
デプロイを自動化することで、手動でデプロイ作業をする必要がなくなり、開発プロセスをスムーズに進めることができます。
また自動デプロイを導入することは、開発プロセスの効率化や品質向上につながります。
ぜひ、Jenkinsを利用した自動デプロイは少し環境の設定などが必要となりますが、本記事を参考にして自動デプロイの導入に挑戦してみてください。