ソフトウェア開発の自動化支援、JenkinsでCI/CDの設定方法

私たちの社会では業務のDXやIT化を実現するさまざなソフトウェアを利用しています。開発側から見るとソフトウェア開発や運用の規模は年々拡大しています。そこで注目されるのがソフトウェア開発の自動化を支援するCI/CDです。

今回は代表的なCI/CDのJenkinsの設定を作成して、コードのデプロイプロセスを自動化する方法について説明します。

How-to-set-up-a-basic-CI-CD-in-Jenkins-and-gitlab.

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設定方法を説明します。

set-up-a-basic-CICD-in-Jenkins-and-gitlab.

ステップ1:サーバーでキーを生成する

-デプロイするサーバーにアクセスし、新しいフォルダーを作成します:/ home / centos / temp

-新しく作成されたフォルダーに移動し、次のコマンドを使用してjenkinsキーを生成します。

ssh-keygen -f jenkins_id_rsa

-キーを作成した後、次のコマンドを使用して公開キーファイルの内容を表示します。

– このキーファイルをコピーして保存します。

ステップ2:公開鍵ファイルをgitlabのプロジェクトにインポートします

-プロジェクトにアクセスして、gitlabでCDを構成する必要があります

-ナビゲーションバーで、[設定]-> [リポジトリ]-> [キーの展開]を選択します

-[キーの展開]セクションで、上記の手順で作成したタイトルと公開キーファイルを入力し、[キーの追加]を選択します

Jenkins-deploy-tokens

ステップ3:gitlabでプロジェクトのクローンを作成して、サーバーで構成する

– 次のコマンドを使用して、/ home / centos / tempフォルダーにアクセス許可を付与します。

chown -R centos:root / home / centos / temp

-フォルダ/ home / centos / tempに移動し、プロジェクトのクローンを作成します

chown--R-centos

– / home / centos / tempフォルダーにpull.shファイルを作成します。ファイルの内容は次のとおりです。

eval`ssh-agent`

ssh-agent $(ssh-add /home/centos/temp/jenkins_id_rsa; git fetch; git pull)

ssh-agent

ステップ4:Jenkinsの構成設定する

Jenkinsにアクセスし、ナビゲーションバーで[Jenkinsの管理]-> [管理]を選択します

Credentials -> global -> Add Credentials

Add-Credentials

– クレデンシャルの追加ページで、JenkinsがデプロイするサーバーにSSHで接続できるようにパラメーターを入力します

SSH-Jenkins-Private-key

-Jenkinsに移動し、ナビゲーションバーで[Jenkinsの管理]-> [ノードとクラウドの管理]-> [新しいノード]を選択します

-新しいノードページで、ノード名を入力し、[永続エージェント]にチェックマークを付けて、[OK]をクリックします。

Jenkinsの管理

このステップでは、名前、リモートルートディレクトリ、およびSSHパラメータをサーバーに入力します

およびSSHパラメータをサーバーに入力します

-[保存]を押して、[エージェントの起動]を選択します

-エージェントが正常に接続すると、新しく作成されたノードサーバーがJenkinsでオンラインになります

Jenkins-server-OT

ステップ5:JenkinsでCDを実行するプロジェクトを作成する

-Jenkinsにアクセスするには、ナビゲーションバーで[新しいアイテム]を選択します

-[新しいアイテム]ページで、作成するアイテムの名前を入力し、[フリースタイルプロジェクト]を選択して、[OK]を選択します

Jenkins-enter-item-name

古いビルドを破棄する(Discard old builds):Max# of builds to keepにて15を入力する

Jenkins-Discard-old-builds

「This project is parameterized」をチェックする

This-project-is-parameterized

This-project-is-parameterized-version

 

-[パイプラインスクリプト]セクションに、スクリプトの内容を入力します。

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”

}

}

Deployment-is-completed

ここで、nodeはノード名を設定し、ファイルpull.shは上記で作成した情報です。

ステップ6:Jenkinsでデプロイコードを実行する

Jenkinsに移動し、[ダッシュボード]セクションで、上記の手順で作成したプロジェクトを選択します。

-プロジェクトページのナビゲーションバーで、パラメータを使用してビルド(Build with parameters)を選択します

Build-with-parameters

Jenkinsでgitlabからサーバーに正常にプルされたコードの結果

Build-with-parameters-Stage-view

 

    ・見積もりの相談(システム開発の費用を概算で知りたい方?)
    ・企画段階からの相談(こんなアプリの開発できますか?)
    ・オフショア開発に不安のある方(オフショア開発って何ですか?)
    ・ベトナムやONETECHに興味のある方(ベトナムでビジネスしたいのですが)
    ・エンジニア人材不足にお悩みの方(エンジニアを採用したいのですが?)
    ご相談やお見積もりは全て無料で対応いたします。

    下記入力フォームに入力し、送信をお願いいたします。後日、担当者から折り返しご連絡させていただきます。また、ご送信頂いた内容によっては、ご回答にお時間がかかる場合がございますのでご了承ください。

    お問い合わせ
    ・見積もりの相談(システム開発の費用を概算で知りたい方?)
    ・企画段階からの相談(こんなアプリの開発できますか?)
    ・オフショア開発に不安のある方(オフショア開発って何ですか?)
    ・ベトナムやONETECHに興味のある方(ベトナムでビジネスしたいのですが)
    ・エンジニア人材不足にお悩みの方(エンジニアを採用したいのですが?)
    ご相談やお見積もりは全て無料で対応いたします。

    下記入力フォームに入力し、送信をお願いいたします。後日、担当者から折り返しご連絡させていただきます。また、ご送信頂いた内容によっては、ご回答にお時間がかかる場合がございますのでご了承ください。

    「個人情報保護方針」をお読みいただき同意いただける場合は「この内容を送信する」ボタンを押して下さい。 入力していただいた内容の送信が完了しても、送信中の状態が続く場合がございます。
    入力していただいたメールアドレス宛に自動返信メールを送信していますので、お手数ですがそちらをご確認ください。
    Tags: CI-CD, Gitlab

      ・見積もりの相談(システム開発の費用を概算で知りたい方?)
      ・企画段階からの相談(こんなアプリの開発できますか?)
      ・オフショア開発に不安のある方(オフショア開発って何ですか?)
      ・ベトナムやONETECHに興味のある方(ベトナムでビジネスしたいのですが)
      ・エンジニア人材不足にお悩みの方(エンジニアを採用したいのですが?)
      ご相談やお見積もりは全て無料で対応いたします。

      下記入力フォームに入力し、送信をお願いいたします。後日、担当者から折り返しご連絡させていただきます。また、ご送信頂いた内容によっては、ご回答にお時間がかかる場合がございますのでご了承ください。

      お問い合わせ
      ・見積もりの相談(システム開発の費用を概算で知りたい方?)
      ・企画段階からの相談(こんなアプリの開発できますか?)
      ・オフショア開発に不安のある方(オフショア開発って何ですか?)
      ・ベトナムやONETECHに興味のある方(ベトナムでビジネスしたいのですが)
      ・エンジニア人材不足にお悩みの方(エンジニアを採用したいのですが?)
      ご相談やお見積もりは全て無料で対応いたします。

      下記入力フォームに入力し、送信をお願いいたします。後日、担当者から折り返しご連絡させていただきます。また、ご送信頂いた内容によっては、ご回答にお時間がかかる場合がございますのでご了承ください。

      「個人情報保護方針」をお読みいただき同意いただける場合は「この内容を送信する」ボタンを押して下さい。 入力していただいた内容の送信が完了しても、送信中の状態が続く場合がございます。
      入力していただいたメールアドレス宛に自動返信メールを送信していますので、お手数ですがそちらをご確認ください。
      無料相談
      お問い合わせ