GitHubへのCommitをトリガーにReactのBuild、S3への配置、Cloudfrontのキャッシュクリアまでを自動化する
2023-03-12
このブログのデプロイを自動化しました。
処理の流れ
GitHubへのPushをトリガーに、CodePipelineを実行CodePipelineは、CodeBuildを実行CodeBuildはbuildspec.ymlに従って処理を実行ReactプロジェクトをBuildBuildしたファイルをS3へ配置Cloudfrontのキャッシュをクリア
CodeBuildは、Codepipelineに結果を通知
構築手順
CodePipelineとCodeBuildの作成
CodePipelineを開き、パイプラインの作成をクリック- パイプライン名
blog - ソースプロバイダーに
GitHub(バージョン2)を選び、リポジトリとブランチを選択 ソースコードの変更時にパイプラインを開始するのチェックが入っていることを確認- ビルドプロバイダーに
AWS CodeBuildを選択 プロジェクトを作成するを選択- プロジェクト名に
blogを入力 - オペレーションシステムに
Amazon Linux2を選択 - ランタイムに
Standardを選択 - イメージに
aws/codebuild/amazonlinux2-x86_64-standard:4.0を選択 - 環境変数に
S3_BUCKET_NAMEを追加 - 環境変数に
CLOUDFRONT_DISTRIBUTION_IDを追加 - その他の設定はデフォルトのまま
CodePipelineに進むをクリック
- プロジェクト名に
- パイプラインの作成ウィザードに戻ってくるので
次にをクリック 導入段階をスキップを選択する。デプロイはCodeBuildで行うため、CodePipelineのデプロイは不要パイプラインを作成をクリック
CodeBuildを実行するロールにS3とCloudfrontへのアクセス権限を付与
IAMを開くcodebuild-blog-service-roleという名前のロールを選択許可を追加のポリシーのアタッチをクリックAmazonS3FullAccessを検索して選択AmazonCloudFrontFullAccessを検索して選択
GitHubのリポジトリにbuildspec.ymlを追加
buildspec.ymlを追加touch buildspec.ymlbuildspec.ymlに以下を追加version: 0.2 phases: build: commands: - npm install - npm run build post_build: commands: - aws s3 sync out s3://${S3_BUCKET_NAME} - aws cloudfront create-invalidation --distribution-id ${CLOUDFRONT_DISTRIBUTION_ID} --paths '/*'- コミットしてプッシュ
以上で、GitHubへのPushをトリガーに、AWS Codepipelineを実行する設定は完了です。
mainブランチにPushすると、コンテンツの配信が自動的に行われます。
