diff --git a/.github/workflows/dev-deploy.yml b/.github/workflows/dev-deploy.yml new file mode 100644 index 0000000..c0f4a99 --- /dev/null +++ b/.github/workflows/dev-deploy.yml @@ -0,0 +1,45 @@ +name: Deploy to S3 and CloudFront + +on: + push: + branches: [main] +permissions: + id-token: write + contents: read +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: "20.10.0" + + - name: Install Dependencies + run: npm ci + + - name: Build Next.js Site + env: + NEXT_PUBLIC_BASE_PATH: "" + run: npm run build:local + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::${{ secrets.DEV_AWS_ACCOUNT_ID }}:role/${{ secrets.DEV_AWS_ROLE_NAME }} + role-session-name: ${{ secrets.DEV_ROLE_SESSION_NAME }} + aws-region: ${{ secrets.DEV_AWS_REGION }} + + - name: Sync to S3 + env: + SRCDIR: out/ + run: | + aws s3 sync $SRCDIR s3://${{ secrets.DEV_S3_BUCKET_NAME }} --delete + + - name: Invalidate CloudFront Cache + run: | + aws cloudfront create-invalidation --distribution-id ${{ secrets.DEV_CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"