GitHub Actionsを使ってReactアプリをAWS S3へ自動デプロイする方法

github-actions-react-aws-s3-deploy
  • URLをコピーしました!

Webアプリを開発する際、手動でビルドしてアップロードするのは手間がかかります。
特に、本番環境やテスト環境へ頻繁に更新する場合、自動化することで作業の効率を大幅に向上させることができます。

この記事では、GitHub Actionsを活用し、GitHubリポジトリにコードをプッシュすると、自動的にReactアプリをビルドし、AWS S3へデプロイする方法を詳しく解説します。

目次

前提条件

本記事では以下の環境を前提としています。

  • Reactで作成されたアプリケーションがある
  • AWS S3に静的サイトをホスティングできる環境がある
  • CloudFrontを使用し、キャッシュの削除を行う
  • GitHubリポジトリが存在し、GitHub Actionsを利用できる

また、AWSの認証情報はGitHubの「シークレット」として登録しておく必要があります。
SettingsSecrets and variablesActionsから、以下のシークレットを追加してください。

シークレット名説明
AWS_ACCESS_KEYAWSのアクセスキー(GitHub ActionsがAWSに接続するために必要)
AWS_SECRET_ACCESS_KEYAWSのシークレットアクセスキー(アクセスキーとセットで使用)
AWS_REGIONデプロイ先のAWSリージョン(例:us-east-1ap-northeast-1
AWS_S3_BUCKET_NAMEデプロイ先のS3バケット名(Reactのビルド成果物をアップロードする場所)
AWS_CLOUD_FRONT_IDCloudFrontのディストリビューションID(キャッシュ削除のために使用)

GitHub Actionsの設定ファイル

以下に示すのは、GitHub Actionsのワークフロー設定ファイル(.github/workflows/s3deploy.yml)の例です。
この設定により、特定のブランチへプッシュした際に自動でビルドとデプロイが実行されます。

設定ファイルの例

設定ファイルの詳細解説

on: の設定

この設定により、v で始まるブランチにプッシュされた際にワークフローが実行されます。

jobs: の設定

このジョブでは、最新のUbuntu環境でワークフローを実行し、5分以内に完了しなければ処理を中断するようにしています。

リポジトリのコードを取得

リポジトリの最新コードを取得し、ワークフロー環境へダウンロードします。

Node.jsのセットアップ

ReactのビルドにはNode.jsが必要なため、バージョン20系をセットアップします。

環境ファイルのリネーム

.env.dev というファイルを .env にリネームし、本番環境用の設定を適用します。

パッケージのインストール

プロジェクトに必要なライブラリをインストールします。

Reactアプリのビルド

npm run build を実行し、最適化された静的ファイルを build/ フォルダに生成します。

AWSの認証情報を設定

GitHubシークレットに保存したAWSのアクセスキーを使用し、AWS CLIを実行できるようにします。

S3へアップロード

ビルドされたファイルを指定したS3バケットへ同期します。

CloudFrontキャッシュの削除

CloudFrontのキャッシュを削除し、最新の変更が即座に反映されるようにします。

まとめ

このワークフローを設定することで、Reactアプリの更新作業を自動化できます。

  1. コードをGitHubプッシュするだけで、自動的にビルドが実行される
  2. ビルドされたファイルがS3にアップロードされる
  3. CloudFrontキャッシュがクリアされ、即座に最新の変更が反映される

手作業の負担を減らし、スムーズにデプロイを行いたい方はぜひ導入を検討してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次