如何从 GitHub 个操作部署 AWS Amplify 应用程序?
How to deploy an AWS Amplify app from GitHub Actions?
我想通过 GitHub 操作控制 Amplify 部署,因为 Amplify 自动构建
- 不提供 GitHub 环境
- 不会监视 CI 的失败并会部署,或者
- 要求我复制 CI 设置并在 Amplify
中重新运行
- 不支持 运行开箱即用的
cypress
工作
- 关闭 auto-build(在
App settings / General / Branches
)。
- 添加以下脚本和作业
scripts/amplify-deploy.sh
echo "Deploy app branch "
JOB_ID=$(aws amplify start-job --app-id --branch-name --job-type RELEASE | jq -r '.jobSummary.jobId')
echo "Release started"
echo "Job ID is $JOB_ID"
while [[ "$(aws amplify get-job --app-id --branch-name --job-id $JOB_ID | jq -r '.job.summary.status')" =~ ^(PENDING|RUNNING)$ ]]; do sleep 1; done
JOB_STATUS="$(aws amplify get-job --app-id --branch-name --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
如果发布失败,您可以改进脚本使其失败,添加所需的步骤(例如 lint、测试),添加 GitHub 环境等。
还有 amplify-cli-action
但它对我不起作用。
- 禁用自动构建:
- 转到 AWS Amplify 控制台中的
App settings > general
并在那里禁用自动构建。
- 转到
App settings > Build Settings
并创建一个网络挂钩,这是一个 curl
命令,它将触发构建。
- 示例:
curl -X POST -d {} URL -H "Content-Type: application/json"
- 将 GitHub 中的 URL 保存为秘密。
- 将
curl
脚本添加到 GitHub 操作 YAML 脚本,如下所示:
deploy:
runs-on: ubuntu-latest
steps:
- name: deploy
run: |
URL="${{ secrets.WEBHOOK_URL }}"
curl -X POST -d {} "$URL" -H "Content-Type: application/json"
我想通过 GitHub 操作控制 Amplify 部署,因为 Amplify 自动构建
- 不提供 GitHub 环境
- 不会监视 CI 的失败并会部署,或者
- 要求我复制 CI 设置并在 Amplify 中重新运行
- 不支持 运行开箱即用的
cypress
工作
- 关闭 auto-build(在
App settings / General / Branches
)。 - 添加以下脚本和作业
scripts/amplify-deploy.sh
echo "Deploy app branch "
JOB_ID=$(aws amplify start-job --app-id --branch-name --job-type RELEASE | jq -r '.jobSummary.jobId')
echo "Release started"
echo "Job ID is $JOB_ID"
while [[ "$(aws amplify get-job --app-id --branch-name --job-id $JOB_ID | jq -r '.job.summary.status')" =~ ^(PENDING|RUNNING)$ ]]; do sleep 1; done
JOB_STATUS="$(aws amplify get-job --app-id --branch-name --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
如果发布失败,您可以改进脚本使其失败,添加所需的步骤(例如 lint、测试),添加 GitHub 环境等。
还有 amplify-cli-action
但它对我不起作用。
- 禁用自动构建:
- 转到 AWS Amplify 控制台中的
App settings > general
并在那里禁用自动构建。
- 转到
App settings > Build Settings
并创建一个网络挂钩,这是一个curl
命令,它将触发构建。
- 示例:
curl -X POST -d {} URL -H "Content-Type: application/json"
- 将 GitHub 中的 URL 保存为秘密。
- 将
curl
脚本添加到 GitHub 操作 YAML 脚本,如下所示:
deploy:
runs-on: ubuntu-latest
steps:
- name: deploy
run: |
URL="${{ secrets.WEBHOOK_URL }}"
curl -X POST -d {} "$URL" -H "Content-Type: application/json"