0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actions と App Runner を用いた CI/CD パイプラインを構築

0
Last updated at Posted at 2026-01-22

はじめに

Githubでmainブランチマージ時、即座にデプロイを走らせたいと思い、Github ActionsとApp Runnerを使って自動化することができたので書き留めておきます。

やること

GitHub (mainマージ)
  ↓
GitHub Actions
  ↓ docker build & push
Amazon ECR
  ↓ 
App Runner(自動デプロイ)

ディレクトリ構成

apprunner-mini という命名のRubyプログラムをDockerで動かすこととして進めていきます。

/Users/../
└── apprunner-mini/
    ├── app.rb
    ├── Gemfile
    ├── Gemfile.lock
    ├── config.ru
    ├── Dockerfile
    └── .github/
        └── workflows/
            └── deploy.yml

ECR作成

AWS Console → ECR → “リポジトリを作成”

(例)

一般設定
リポジトリ名: apprunner-mini

イメージタグ設定
イメージタグのミュータビリティ: 上書きしてもいい場合はMutable

暗号化設定
AES-256

※作成後、以下のような レポジトリ URI をメモしておく
(例)123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/apprunner-mini

App Runner作成

AWS Console → App Runner → “サービスの作成”

(例)

ソース
リポジトリタイプ: コンテナレジストリ
プロバイダー: Amazon ECR
コンテナイメージのURI: ECR作成時に発行された レポジトリ URI

デプロイ設定
デプロイトリガー: 自動
ECRアクセスロール: IAMロールを選択または作成

サービス設定
サービス名: apprunner-mini
仮想CPU、仮想メモリ: 適切な値でOK
ポート: 使用しているポートでOK

ヘルスチェック
プロトコル: HTTP
パス: アプリ内でヘルスチェックできるパス

(初回起動用)ローカルからECRに1回push

AWSログイン(東京リージョン例)

aws --version
aws configure   # 未設定ならここで設定(アクセスキー等)

ECRログイン
< ACCOUNT_ID > と < REGION > を自分のに置換

aws ecr get-login-password --region ap-northeast-1 \
| docker login --username AWS --password-stdin <ACCOUNT_ID>.dkr.ecr.ap-northeast-1.amazonaws.com

buildxでビルドしてpush
私はAppleシリコンのMacのため、amd64としています。

docker buildx create --use --name apprunner-builder 2>/dev/null || true

docker buildx build --platform linux/amd64 \
  -t <ECR_URI>:latest \
  --push .

終わったら、AWS Console → ECR → apprunner-mini → Images にlatestが見えることを確認。

GitHub ActionsとApp Runnerの連携

GitHub Secretsに環境変数追加

Settings → Secrets and variables → Actions :

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

AWS_REGION

AWS_ACCOUNT_ID

ECR_REPOSITORY

workflow をソースコード上に置く
.github/workflows/deploy.yml
(例)

name: deploy-to-apprunner

on:
  push:
    branches: [ "main" ]

permissions:
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}

      - name: Login to Amazon ECR
        uses: aws-actions/amazon-ecr-login@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Build and push image (linux/amd64)
        env:
          AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
          AWS_REGION: ${{ secrets.AWS_REGION }}
          ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }}
        run: |
          ECR_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${ECR_REPOSITORY}"

          docker buildx build --platform linux/amd64 \
            -t "${ECR_URI}:latest" \
            -t "${ECR_URI}:${GITHUB_SHA}" \
            --push .

mainにマージしてみてGithub ActionsとApp Runnerを確認

Github Actions
スクリーンショット 2026-01-22 19.04.17.png

App Runner
スクリーンショット 2026-01-22 19.05.03.png

おわりに

簡易的ではありますが、mainマージ時のデプロイを自動化することに成功しました。
参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?