amazon-web-servicesdeploymentaws-amplifygithub-actions

How to deploy an AWS Amplify app from GitHub Actions?


I want to control Amplify deployments from GitHub Actions because Amplify auto-build


Solution

  • scripts/amplify-deploy.sh

    echo "Deploy app $1 branch $2"
    JOB_ID=$(aws amplify start-job --app-id $1 --branch-name $2 --job-type RELEASE | jq -r '.jobSummary.jobId')
    echo "Release started"
    echo "Job ID is $JOB_ID"
    
    while [[ "$(aws amplify get-job --app-id $1 --branch-name $2 --job-id $JOB_ID | jq -r '.job.summary.status')" =~ ^(PENDING|RUNNING)$ ]]; do sleep 1; done
    JOB_STATUS="$(aws amplify get-job --app-id $1 --branch-name $2 --job-id $JOB_ID | jq -r '.job.summary.status')"
    echo "Job finished"
    echo "Job status is $JOB_STATUS"
    
      deploy:
        runs-on: ubuntu-latest
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_DEFAULT_REGION: us-east-1
          AWS_DEFAULT_OUTPUT: json
        steps:
        - uses: actions/checkout@v2
        - name: Deploy
          run: ./scripts/amplify-deploy.sh xxxxxxxxxxxxx master
    

    You could improve the script to fail if the release fails, add needed steps (e.g. lint, test), add a GitHub Environment, etc.

    There's also amplify-cli-action but it didn't work for me.