Jenkins

AWSでJenkins導入とCI/CD自動化の手順

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

CI/CD自動化の意義とAWSとの相性

CI/CD(継続的インテグレーション・デリバリー)は、開発から本番環境への移行を自動化し、人為的なエラーを減らす手法です。AWSではCodePipelineやS3、ALBといったサービスが連携することで、高可用性とスケーラビリティの両立が可能になります。以下に代表的なメリットを比較表で示します。

項目 伝統的手法 Jenkins+AWS
自動化レベル 手動作業中心 完全自動化可能
スケーラビリティ 環境依存 AWSのグローバルインフラ活用
セキュリティ 拡張性が低い IAMロールによる厳格な権限管理

JenkinsをAWSで導入することで、DevOpsエンジニアは複数環境間の手動作業から解放され、運用コスト削減と品質向上が期待できます。


JenkinsサーバーのAWS EC2インストール手順

Jenkinsサーバーを構築するためには、EC2インスタンスの選定やセキュリティ設定が不可欠です。以下にステップバイステップで説明します。

EC2インスタンス構築時のセキュリティ設定

AWSでJenkinsサーバーを運用する際は、以下の点に注意してください。

  1. セキュリティグループの設定: SSHポート(22)とJenkinsのデフォルトポート(50000)を許可。
  2. IAMロールの割当: EC2インスタンスにAWS CLIアクセス権限を付与。
  3. VPC構成: プライベートサブネットを使用し、外部からの直接アクセスを防ぐ。

Jenkinsサーバーは、セキュリティ設定の明確化が重要です。適切なIAMロールとVPC構成を組み合わせることで、運用の安定性が向上します。


Java環境とJenkinsの導入プロセス

EC2インスタンスにJenkinsを導入するには、以下のような手順が必要です。

  1. Javaランタイムのインストール:
    bash
    sudo apt update && sudo apt install openjdk-8-jdk -y

  2. Jenkinsのダウンロードと起動:
    bash
    wget -qO- https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
    echo "deb http://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
    sudo apt update && sudo apt install jenkins -y

  3. 初期設定:
    ブラウザで http://<EC2_IP>:8080 にアクセスし、管理者パスワードを取得後、必要最低限のプラグイン(如:AWS CLI, CodeDeploy)を導入。


AWS CodePipelineとの連携設定方法

JenkinsとCodePipelineを組み合わせることで、ソースコード変更からデプロイまでの全自動ワークフローが実現可能です。以下に具体的な接続手順を解説します。

CodePipelineアーキテクチャ概要

CodePipelineは「ステージ(Stage)」ごとに処理を分離する仕組みを持っています。Jenkinsとの連携では、以下の要素が重要です。

  • Source Stage: GitHubやS3からコード取得
  • Build Stage: Jenkinsでビルド実行
  • Deploy Stage: CodeDeploy経由でALB経由のローリングデプロイ

CodePipelineとJenkinsを連携する際は、Webhookを利用してGitHubプッシュイベントをトリガーに設定します。AWS公式ドキュメントが参考になります(AWS Documentation)。


JenkinsとCodePipelineの接続プロトコル

JenkinsとCodePipelineを連携させるには、以下のような手順が必要です。

  1. IAMロール作成: CodePipelineがJenkinsにアクセスできる権限を付与。
  2. Webhook設定: GitHubリポジトリでプッシュイベント時、CodePipelineを起動するように設定。
  3. Jenkinsジョブの作成: CodePipelineが提供したアーティファクトを取得し、ビルドスクリプト(Jenkinsfile)を実行。

S3バケットを活用したコードデプロイワークフロー構築

S3はCI/CDワークフローにおいてアーティファクトの永続保存・配布に最適なサービスです。以下に具体的な手順を解説します。

S3バケットのアクセス権付与手順

JenkinsからS3にアクセスするには、以下の権限が必要です。

  1. IAMロール作成:
  2. AmazonS3FullAccess ポリシーをアタッチ。
  3. AWS CLI設定: JenkinsサーバーでAWS CLIをインストールし、aws configureコマンドでアクセス情報を登録。


Artifact保存と取得のタイミング

S3バケットでのワークフローでは、以下のようなタイミングでアーティファクトを処理します。

  • Build完了後: Jenkinsがビルド結果をS3に保存。
  • Deploy前: CodePipelineがS3からアーティファクト取得し、CodeDeploy経由でEC2インスタンスへ配布。

S3バケットのライフサイクルポリシーを活用することで、「バージョン管理と配布処理」が実現可能です(AWS Documentation)。


ALB経由でのローリングデプロイ実現方法

ALB(Application Load Balancer)を活用することで、停止せずにアプリケーションの更新が可能になります。以下に具体的な構成手順を解説します。

EC2インスタンスグループの構成

ローリングデプロイには、以下のコンポーネントが必要です。

  • Auto Scaling Group: 新しいインスタンスを自動で起動。
  • CodeDeployアグリゲーター: デプロイ中のトラフィックを切り替える。

ALBのロードバランサー設定は、AWS管理コンソールから「Listener」と「Target Group」を構成します。


ALBリスナー設定とヘルスチェック

ALBでローリングデプロイを行うには、以下のポイントを確認してください。

  1. リスナーの構成: HTTP/HTTPSポートにリスナーを追加。
  2. 健康チェック設定: EC2インスタンスが正常かどうかを定期的に確認。

CodeDeployとの連携で「Blue/Greenデプロイ」も実現可能であることが示されています(AWS Documentation)。


必須プラグインの導入手順と環境構築確認

Jenkinsの安定した運用には、AWS CLIやCodeDeployなどのプラグインが不可欠です。以下に手順を解説します。

AWS CLIとCodeDeployプラグインの設定

JenkinsでAWSのサービスを使用するには、以下のプラグインを導入してください。

  1. AWS CLI: Jenkinsの管理画面から「AWS CLI」プラグインをインストール。
  2. CodeDeployアダプター: CodeDeployとの連携用に「Amazon EC2 Deployment Agent」を有効化。

プラグイン導入後は、Jenkinsの構成画面でAWS資格情報を設定し、CodePipelineとの接続性を確認します。


パイプライン動作テスト手順

最後に、パイプラインが正しく動作するかテストを行います。

  1. GitHubリポジトリへのプッシュ: コード変更を反映。
  2. CodePipelineの起動確認: Jenkinsでビルドジョブが自動実行されることをチェック。
  3. ALB経由でのアクセステスト: ブラウザからアプリケーションにアクセスし、ローリングデプロイが正しく行われているか確認。

実務では、「Jenkinsfile」にPipelineの定義を記述し、テスト環境で動作を再現することが重要です(AWS Documentation)。


スポンサードリンク

-Jenkins