【AWS】ReactをCodepipeineでS3にデプロイ

1. 使用するサービス

(AWS)

  • CodePipeline
  • CodeBuild
  • S3


2.概要

GitHubで管理しているReactソースを指定したブランチをプッシュするとそのブランチの中のReactソースをビルドしてS3にデプロイしてくれる流れを説明します。
前提としてS3は作成済で、GitHubなどソース管理のツールは導入済として特に説明はしません。
CodePipelineの説明は過去記事参照。
buffalokusojima.hatenablog.com

3. 実装

GitHubやCodeCommitのブランチのプッシュに対するCodePipelineのキックは上記の過去記事参考。
CodeBuildから説明します。

3-1. CodeBuildの設定

基本的に過去記事通りで大丈夫です。buildspec.ymlの中は以下のようにします。

Reactソースはappフォルダにある事にして書いています。適宜編集お願いします。

version: 0.2
phases:
  install:
    commands:
      - n stable
      - npm update -g npm
      - node -v
      - npm -v
  pre_build:
    commands:
      - echo Entring app directory
      - cd app
      - npm install
      - npm run lint
  build:
    commands:
      - echo Build started on `date`
      - npm run build
      
  post_build:
    commands:
      #環境変数にCloudfrontのディストリビューションを設定しておく
      - aws cloudfront create-invalidation --distribution-id $DISTRIBUTION --paths "/*"
  
artifacts:
  files:
    - '**/*'
  #S3に入れる中身を指定
  #buildするとbuildフォルダが出来るのでそれを指定
  base-directory: app/build

3-2. Deploy

CodeBuildの作成が終わったら次にS3へのデプロイの設定です。
下記のように入力し、S3のバケットを指定すれば完了です。

deploy_to_s3
S3へのデプロイ

4.おわりに

Reactに関しては2年前に少し勉強した程度で全くわかりませんが、いずれ勉強はするつもりです。
今回、ReactのBuildについて触れ、ソースのbuildとデプロイをする機会があったので備忘録的な感じで載せました。
意外と簡単でした。ローカルだとReact死ぬ程分からなかったですが、S3へのデプロイとなると何故かすんなり行きました。