如何从 GitHub Actions 部署 AWS Amplify 应用程序?

thi*_*ign 12 deployment amazon-web-services aws-amplify github-actions

我想从 GitHub Actions 控制 Amplify 部署,因为 Amplify 自动构建

  • 不提供GitHub环境
  • 不观察 CI 的故障并无论如何都会进行部署,或者
  • 要求我复制 CI 设置并在 Amplify 中重新运行它
  • 不支持cypress开箱即用地运行作业

thi*_*ign 11

  • 关闭自动构建(在App settings / General / Branches)。
  • 添加以下脚本和作业

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"
Run Code Online (Sandbox Code Playgroud)
  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
Run Code Online (Sandbox Code Playgroud)

您可以改进脚本,使其在发布失败时失败,添加所需的步骤(例如 lint、测试)、添加 GitHub 环境等。

也有amplify-cli-action,但对我来说没用。