私たちの社会では業務のDXやIT化を実現するさまざなソフトウェアを利用しています。開発側から見るとソフトウェア開発や運用の規模は年々拡大しています。そこで注目されるのがソフトウェア開発の自動化を支援するCI/CDです。
今回は代表的なCI/CDのJenkinsの設定を作成して、コードのデプロイプロセスを自動化する方法について説明します。
CI/CDとは?
CI/CDはContinuous Integration、通称CIと、Continuous Delivery、通称CDを合わせたもので、日本語では継続的インテグレーション/継続的デリバリーといいます。
CIとは?
次に、CIとCDそれぞれの意味についてご説明します。
まず初めにCIとは、開発者による新しいコード変更が定期的にビルド・テストされ、自動化される手法です。
これにより、ソフトウェアのバグを早期に発見し、その発見にすぐ対応することができます。
CDとは?
CDとは、継続的インテグレーションを拡張した手法です。ビルドやテストだけでなく、本番環境のリリースプロセス全体を自動化することです。
CIとCDをセットで使用することによって、作業からテスト、そして公開までの流れを自動化によって効率よく迅速且つ継続的に実施することができます。
このツールを利用すれば、よりユーザーのニーズに応えやすくなり、バグの改善にも早く対応することができます。
CI/CDの利用のメリット
-継続的テスト:CI/CDは新しいコードを継続的にテストします。これにより、新しいコードがサーバーに更新される前にシステムでエラーが発生するのを防ぐことができます。
-ショートコード:CI/CDは、システム全体が正常に動作しているときに、修正または改善が必要な部分のショートコードを更新できます。これにより、コードのテストとデバッグが簡単になります。プログラマーは、全体を確認しなくても、エラーコードを簡単に見つけることができます。
-クイックリリース:CI/CDは、更新された新しいコードを継続的に更新およびチェックします。システムエラーがある場合は、簡単に検出して特定し、切り分けることができます。これにより、コードリリースプロセスがより速く簡単になります。
-高速MTTR:MTTRまたは平均解決時間。これは、実行中のシステムのエラーを修正するのにかかる時間を意味します。 CI/CDは、テスト用にコードをセクションに分割します。これにより、コードが分離され、プログラマーは全体を確認しなくてもエラーコードを簡単に見つけることができます。
-簡単なメンテナンス:CI/CDは見やすい形式であり、以前のシステムアップデートも保存されます。プログラマーは古いコードを調べて、システムを簡単にテストおよび保守できます。
JenkinsのCI/CD
Jenkinsは、自動化操作を構築するオープンソースのCI/CDです。 この記事では、Jenkinsとgitlabで基本的なCD設定方法を説明します。
ステップ1:サーバーでキーを生成する
-デプロイするサーバーにアクセスし、新しいフォルダーを作成します:/ home / centos / temp
-新しく作成されたフォルダーに移動し、次のコマンドを使用してjenkinsキーを生成します。
ssh-keygen -f jenkins_id_rsa
-キーを作成した後、次のコマンドを使用して公開キーファイルの内容を表示します。
– このキーファイルをコピーして保存します。
ステップ2:公開鍵ファイルをgitlabのプロジェクトにインポートします
-プロジェクトにアクセスして、gitlabでCDを構成する必要があります
-ナビゲーションバーで、[設定]-> [リポジトリ]-> [キーの展開]を選択します
-[キーの展開]セクションで、上記の手順で作成したタイトルと公開キーファイルを入力し、[キーの追加]を選択します
ステップ3:gitlabでプロジェクトのクローンを作成して、サーバーで構成する
– 次のコマンドを使用して、/ home / centos / tempフォルダーにアクセス許可を付与します。
chown -R centos:root / home / centos / temp
-フォルダ/ home / centos / tempに移動し、プロジェクトのクローンを作成します
– / home / centos / tempフォルダーにpull.shファイルを作成します。ファイルの内容は次のとおりです。
eval`ssh-agent`
ssh-agent $(ssh-add /home/centos/temp/jenkins_id_rsa; git fetch; git pull)
ステップ4:Jenkinsの構成設定する
Jenkinsにアクセスし、ナビゲーションバーで[Jenkinsの管理]-> [管理]を選択します
Credentials -> global -> Add Credentials
– クレデンシャルの追加ページで、JenkinsがデプロイするサーバーにSSHで接続できるようにパラメーターを入力します
-Jenkinsに移動し、ナビゲーションバーで[Jenkinsの管理]-> [ノードとクラウドの管理]-> [新しいノード]を選択します
-新しいノードページで、ノード名を入力し、[永続エージェント]にチェックマークを付けて、[OK]をクリックします。
このステップでは、名前、リモートルートディレクトリ、およびSSHパラメータをサーバーに入力します
-[保存]を押して、[エージェントの起動]を選択します
-エージェントが正常に接続すると、新しく作成されたノードサーバーがJenkinsでオンラインになります
ステップ5:JenkinsでCDを実行するプロジェクトを作成する
-Jenkinsにアクセスするには、ナビゲーションバーで[新しいアイテム]を選択します
-[新しいアイテム]ページで、作成するアイテムの名前を入力し、[フリースタイルプロジェクト]を選択して、[OK]を選択します
古いビルドを破棄する(Discard old builds):Max# of builds to keepにて15を入力する
「This project is parameterized」をチェックする
-[パイプラインスクリプト]セクションに、スクリプトの内容を入力します。
currentBuild.result = “SUCCESS”
stage(‘Start service’){
node(‘Server-OT’){
echo “start pull”
sh ‘cd /home/centos/temp/jenkins && sh /home/centos/temp/pull.sh || true’
echo “Deployment is completed”
}
}
ここで、nodeはノード名を設定し、ファイルpull.shは上記で作成した情報です。
ステップ6:Jenkinsでデプロイコードを実行する
Jenkinsに移動し、[ダッシュボード]セクションで、上記の手順で作成したプロジェクトを選択します。
-プロジェクトページのナビゲーションバーで、パラメータを使用してビルド(Build with parameters)を選択します
Jenkinsでgitlabからサーバーに正常にプルされたコードの結果