「コードを変更するたびに、手動でビルド、テスト、デプロイするのは面倒…」
「もっと効率的に開発を進める方法はないの?」
そんなあなたにおすすめなのが、「CI/CD(継続的インテグレーション/継続的デリバリー・デプロイメント)」です。今回は、CI/CDの基本概念と、VPSにCI/CD環境を構築する方法を、初心者にも分かりやすく解説します。
CI/CDとは?
CI/CDとは、ソフトウェア開発のプロセスを自動化し、開発効率と品質を向上させるための手法です。
継続的インテグレーション(CI)
継続的インテグレーション(CI)とは、開発者がコードを変更するたびに、自動的にビルドとテストを実行するプロセスです。CIにより、コードの変更によって問題が発生していないかを早期に発見できます。
継続的デリバリー/デプロイメント(CD)
継続的デリバリー/デプロイメント(CD)とは、CIのプロセスを拡張し、ビルドとテストが成功したコードを、自動的に本番環境またはステージング環境にデプロイするプロセスです。
-
継続的デリバリー: デプロイは手動で行う
-
継続的デプロイメント: デプロイまで自動化する
CI/CDのメリット
CI/CDを導入すると、以下のメリットがあります。
ビルド、テスト、デプロイを自動化することで、開発者はコードの変更に集中でき、開発効率が向上します。
自動化されたテストにより、コードの品質を高く保つことができます。
問題を早期に発見し、修正できるため、本番環境でのトラブルのリスクを低減できます。
VPSでCI/CD環境を構築するメリット
「CI/CDって、クラウドサービスを使わないとダメなの?」
そんなことはありません! VPSでもCI/CD環境を構築できます。
自由度の高さ
VPSは、自分専用のサーバー環境であるため、自由にCI/CDツールを選択し、カスタマイズできます。
コストの低さ
VPSは、クラウドサービスと比較して、低コストで利用できる場合があります。
24時間稼働
VPSは、24時間365日稼働しているため、いつでもCI/CDパイプラインを実行できます。
本番環境に近い環境
VPSは、本番環境に近い環境でCI/CDパイプラインを実行できるため、デプロイ時のトラブルを減らすことができます。
CI/CDツールの選択肢
CI/CDを実現するためのツールは、たくさんあります。
Jenkins
最も人気のあるオープンソースのCI/CDツールです。豊富なプラグインがあり、様々な開発環境に対応できます。
GitLab CI/CD
GitLabに組み込まれているCI/CD機能です。GitLabを使っている場合は、簡単にCI/CDを導入できます。
CircleCI
クラウドベースのCI/CDサービスです。設定が簡単で、すぐに使い始められます。
Travis CI
GitHubとの連携に特化した、クラウドベースのCI/CDサービスです。
その他(Drone、GoCDなど)
他にも、様々なCI/CDツールがあります。
VPSにCI/CD環境を構築する手順(例:Jenkins)
今回は、Jenkinsを例に、VPSにCI/CD環境を構築する手順を解説します。
VPSの準備
VPSのOSは、Linux(Ubuntu、CentOSなど)がおすすめです。
JenkinsはJavaで動作するため、Javaをインストールします。
Jenkinsのインストール
# Ubuntu/Debianの場合
sudo apt update
sudo apt install openjdk-11-jdk # または適切なバージョンのJava
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
# CentOS/RHELの場合
sudo yum install java-11-openjdk-devel # または適切なバージョンのJava
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install jenkins
Jenkinsの公式サイトから、warファイルをダウンロードして、手動で起動することもできます。
Jenkinsの設定
Jenkinsを起動し、Webブラウザでアクセスします。初期設定ウィザードに従って、管理者ユーザーの作成やプラグインのインストールを行います。
必要なプラグインをインストールします。(例:Gitプラグイン、GitHubプラグイン)
Jenkinsでジョブを作成し、CI/CDパイプラインを定義します。
GitHubやGitLabなどのソースコード管理システムと連携します。
ビルドコマンドを設定します。(例:mvn clean install、npm install && npm run build)
テストコマンドを設定します。(例:mvn test、npm test)
デプロイ先(VPSなど)やデプロイ方法を設定します。(例:SSH、rsync、Docker)
CI/CDパイプラインの例
GitHubへのプッシュをトリガーに自動ビルド・テスト・デプロイ
-
開発者がGitHubにコードをプッシュする。
-
JenkinsがGitHubからのプッシュを検知する。
-
Jenkinsが自動的にビルドとテストを実行する。
-
ビルドとテストが成功したら、Jenkinsが自動的にVPSにデプロイする。
まとめ
今回は、CI/CDの基本概念と、VPSにCI/CD環境を構築する方法を解説しました。
CI/CDを導入することで、開発効率と品質を向上させることができます。
「CI/CDは難しそう…」
と思うかもしれませんが、まずは簡単なことから始めてみましょう。
VPSを使えば、比較的低コストで、自由度の高いCI/CD環境を構築できます。
ぜひ、この機会にCI/CDにチャレンジしてみてください。
開発のスピードと質が劇的に変わる可能性があります。
おすすめのVPSを下記の記事で紹介しています。
コメント