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でReactアプリをS3にアップロードする

Last updated at Posted at 2023-12-16

はじめに

この記事は DENSO アドベントカレンダー 2023 の17日目の記事です。

業務の特徴もあり普段AWSを重点的に使用しています。
CI/CDパイプラインもAWSのCodeシリーズを使用しています。
Github Actionsがとても便利だと聞く機会が多いので使ってみました。
昨年のAdvent Calendarで作成したReactアプリをS3にデプロイするワークフローを作成しました。
今回は、Github Actionsに関して記事にします。

構成

インフラは、CloudFront + S3の構成
Githubでコードを管理し、mainブランチにpushされたらS3にアプリをデプロイ

意識したこと

  • Github Actionsでビルド〜デプロイまで実施
  • IAMユーザ(恒久的なクレデンシャル)を使用しない
  • AWSアカウントID等のあまり知られたくない情報は直書きしない

学んだこと

  • ymlファイルでワークフローを定義して、.github/workflow/に配置する
  • OIDCを使用すると、IAM Roleを使用してAWS内のリソースにアクセスできる
  • Secretを使用すると、変数を安全に保管しGithub Actionsから取得できる

成果物

name: Deploy React app to S3
on:
  push:
      branches:
        - main
env:
  AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
  AWS_ROLE_NAME: ${{ secrets.AWS_ROLE_NAME }}
  S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }}
  AWS_REGION: ap-northeast-1
permissions:
  id-token: write
  contents: read
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v4
      - name: configure aws credentials
        uses: aws-actions/configure-aws-credentials@v3
        with:
          role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/${{ env.AWS_ROLE_NAME }}
          role-session-name: samplerolesession
          aws-region: ${{ env.AWS_REGION }}
      - name: install
        run: npm install
      - name: build
        run: npm run build
      - name:  deploy
        run: |
          aws s3 cp --recursive build s3://${{ env.S3_BUCKET_NAME }}/

感想

とてもお手軽にリリースまで出来て感動しました。

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?