name: 🚀 Deploy to AWS on: workflow_dispatch: push: branches: - master tags: - '*' paths: - api/** - serverless.yml - package.json - .github/workflows/deploy-aws.yml jobs: deploy-api: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 16 - uses: chrnorm/deployment-action@releases/v1 name: Create GitHub deployment for API id: deployment_api with: token: ${{ secrets.BOT_TOKEN || secrets.GITHUB_TOKEN }} environment: api ref: ${{ github.ref }} - name: Install Serverless CLI and dependencies run: | npm i -g serverless yarn - name: Deploy to AWS env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: serverless deploy - name: Update GitHub deployment status (API) if: always() uses: chrnorm/deployment-status@releases/v1 with: token: ${{ secrets.BOT_TOKEN || secrets.GITHUB_TOKEN }} state: "${{ job.status }}" deployment_id: ${{ steps.deployment_api.outputs.deployment_id }} ref: ${{ github.ref }} deploy-frontend: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 16 - uses: chrnorm/deployment-action@releases/v1 name: Create GitHub deployment for Frontend id: deployment_frontend with: token: ${{ secrets.BOT_TOKEN || secrets.GITHUB_TOKEN }} environment: frontend ref: ${{ github.ref }} - name: Install dependencies and build run: | yarn install yarn build - name: Setup AWS uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Upload to S3 env: AWS_S3_BUCKET: 'web-check-frontend' run: aws s3 sync ./build/ s3://$AWS_S3_BUCKET/ --delete - name: Invalidate CloudFront cache uses: chetan/invalidate-cloudfront-action@v2.4 env: DISTRIBUTION: E30XKAM2TG9FD8 PATHS: '/*' AWS_REGION: 'us-east-1' AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Update GitHub deployment status (Frontend) if: always() uses: chrnorm/deployment-status@releases/v1 with: token: ${{ secrets.BOT_TOKEN || secrets.GITHUB_TOKEN }} state: "${{ job.status }}" deployment_id: ${{ steps.deployment_frontend.outputs.deployment_id }} ref: ${{ github.ref }}