Jenkins

AWSでJenkinsとCodePipelineによるCI/CD自動化チュートリアル

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

AWS環境におけるCI/CD自動化の概要

AWS環境での継続的インテグレーション・デリバリー(CI/CD)は、開発から運用までのプロセスを効率化するための重要な技術です。Jenkinsを活用することで、コード変更時の自動テストやデプロイを実現し、人為的なミスを削減できます。本記事では、AWS EC2へのJenkins導入CodePipelineとの連携といった具体的な手順をステップバイステップで解説します。対象となる主な作業は以下の通りです。

  • JenkinsサーバーのEC2インスタンス構築
  • CodePipelineとJenkinsジョブの統合設計
  • S3バケットとALBを介したアプリケーションデプロイフロー構築
  • GitHubリポジトリ連携時のイベント自動起動設定
  • セキュリティグループの適切なポート開放方法

AWS EC2インスタンスへのJenkins導入手順

JenkinsをAWSで利用するには、まずEC2インスタンス上に導入する必要があります。以下の手順に従うことで、開発環境を整えられます。

EC2インスタンスの事前準備

  1. AMI選定AmazonLinux2023Ubuntu Server 22.04 LTSなど、Jenkinsが動作するOSイメージを選択します。
  2. セキュリティグループ設定:SSH接続用にポート22を開放し、JenkinsのWebインターフェースアクセスに使用するポート(通常8080)も許可します。
  3. キーペア作成:SSH接続時に必要となるため、事前にAWSマネジメントコンソールから生成してください。

Jenkinsのインストールと初期設定

  1. EC2インスタンスにSSHで接続後、Java環境を確認・導入します。以下のようにコマンドを実行します:
    bash
    sudo yum install -y java-17-openjdk-devel

  2. Jenkinsのリポジトリ登録とパッケージインストールを行います:
    bash
    wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    sudo yum install -y jenkins

  3. Jenkinsサービスを起動し、初期設定でアクセス権を許可します。

セキュリティグループの適切なポート開放

  • SSH(22):リモート接続用に必須です。
  • Jenkins Webインターフェース(8080):ブラウザからアクセスするため、このポートを許可します。
  • VPC内での通信制限:他のAWSサービスとやり取りする際は、セキュリティグループで最小限の通信範囲に限定しましょう。

CodePipelineとの連携設定方法

JenkinsとAWS CodePipelineを連携させることで、開発ライフサイクル全体を自動化できます。以下の手順に従って統合フローを作成します。

CodePipelineアカウントの作成

  1. AWSコンソールからCodePipelineサービスを開き、「新規パイプライン」を選択します。
  2. Source(ソース)ステージではGitHubリポジトリを指定し、Build(ビルド)ではJenkinsジョブを参照するように設定します。

Jenkinsジョブとの統合フロー設計

  • JenkinsジョブはCodePipelineからスクリプト形式で呼び出されるため、Jenkinsfile内にpipelineブロックを記述し、ステージごとに処理を分離します。
  • Test(テスト)ステージでは、ユニットテストや静的解析を行うツール(例:JUnit、SonarQube)を利用します。

ステージごとのビルド・テスト・デプロイの設定

ステージ 説明 必要なリソース
Source GitHubからコードを取得する Gitリポジトリ、SSHキーペア
Build Jenkinsでビルド処理を実行 ビルドスクリプト(Mavenなど)
Deploy AWS CodeDeployにデプロイする CodeDeployアプリケーション設定

S3バケットとALBの統合デプロイフロー

S3とApplication Load Balancer(ALB)を連携させることで、ロードバランサー経由でのデプロイフローを構築できます。

S3へのアーカイブ構成

  1. バージョン管理付きのS3バケットを作成し、ビルド成果物を格納します。
  2. Jenkinsジョブ内ではaws s3 cpコマンドで成果物をアップロードさせます。

Application Load Balancerの初期設定

  • ALBに「HTTPSリスナー」を設定し、証明書(AWS Certificate Manager)を取得・割り当てます。
  • ターゲットグループとしてEC2インスタンスやFargateコンテナを選択し、ヘルスチェックを構成します。

JenkinsからALBへの自動リダイレクト処理

  • デプロイステージでは、S3にアップロードされたファイルをAWS CLI経由でALBのターゲットグループへ配信させます。
  • ALBは自動的に最新バージョンのアプリケーションを提供します。

GitHubリポジトリ連携時のイベントトリガー設定

GitHubからのプッシュやプルリクエスト時に自動ビルドを実行するには、Webhookの設定が必要です。

WebhookのURL生成と認証

  1. Jenkinsで「Manage Jenkins」→「Configure System」からGitHubプラグインを有効化します。
  2. Webhook URLは、https://<Jenkinsホスト>:8080/github-webhook/形式になります。

プッシュ・プルリクエストイベントの指定

  • GitHubリポジトリ内の「Settings」→「Webhooks」にURLを登録します。
  • Payload URLContent type(JSON)を入力し、Push eventsPull request eventsを選択します。

JenkinsでのGitクローン処理の最適化

  • Jenkinsfile内にcheckout scmコマンドを使用することで、リポジトリから最新コードを取得できます。
  • セキュリティ上は、Personal Access Tokenで認証を行うことを推奨します。

セキュリティグループ・ポート設定のベストプラクティス

セキュリティグループの適切な設定はインフラの安全性に直結するため、以下のように設計する必要があります。

Jenkinsサーバー用セキュリティグループ設計

  • 入力ルール:SSH(22)、Jenkins Webインターフェース(8080)を許可し、Source IP範囲は最小限に設定します。
  • 出力ルール:S3やCodePipelineとの通信に必要なポート(443など)を開放するのみとします。

必要なポートと外部アクセス制限

ポート 説明 有効範囲
22 SSH接続用 開発者IP限定
8080 Jenkins UIアクセス 内部ネットワーク限定
443 HTTPS通信(S3/CodePipeline) 外部から許可

定期的なポリシー見直し手順

  • 月1回のセキュリティレビューで、不要なポート開放やIP範囲を削除します。
  • VPC内での通信経路最適化を実施し、EC2間での暗号化通信(TLS)を強制する設定も検討しましょう。

  • Jenkins CI/CDの導入とAWS環境構築は、以下の順序で進めます:
  • EC2インスタンスの準備 → Jenkinsインストール → CodePipelineとの連携 → S3・ALB統合デプロイ → GitHubイベントトリガー設定 → セキュリティグループ最適化
  • 具体的な手順と設定値は、AWSマネジメントコンソールJenkins Webインターフェースで確認可能です。
  • 設定ミスを防ぐために、各ステップのテスト実行(例:手動デプロイ→自動デプロイ)を行いましょう。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Jenkins