Label API Snapshot. #3240
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# To debug, it's recommended you modify / use the version in the test-actions repo: | |
# https://github.com/act-now-coalition/test-actions/blob/master/.github/workflows/label_api_snapshot.yml | |
# Used to assign a label (like /snapshot/latest or /v0) to a published API | |
# snapshot (like /snapshot/123). | |
# | |
name: Label API Snapshot. | |
on: | |
workflow_dispatch: | |
inputs: | |
snapshot_id: | |
description: 'The snapshot ID (e.g. 1234) to be labeled as "latest" and used by the API.' | |
required: true | |
jobs: | |
label-api-snapshot: | |
runs-on: ubuntu-latest | |
env: | |
AWS_S3_BUCKET: 'data.covidactnow.org' | |
LABEL: 'latest' | |
SNAPSHOT_ID: '${{ github.event.inputs.snapshot_id }}' | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v2 | |
- name: Verify Snapshot ID provided | |
if: ${{ !env.SNAPSHOT_ID }} | |
run: 'echo "Missing input parameter: snapshot_id" ; exit 1' | |
# TODO: We want to replace this with a "symlink" of some kind, perhaps implemented at | |
# the CloudFront layer. | |
- name: Create Label (Copy files from /snapshot/${{env.SNAPSHOT_ID}}/ to /${{env.LABEL}}/) | |
uses: jakejarvis/s3-sync-action@master | |
with: | |
args: --acl public-read --follow-symlinks | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
SOURCE_DIR: 's3://${{env.AWS_S3_BUCKET}}/snapshot/${{env.SNAPSHOT_ID}}/' | |
DEST_DIR: '${{env.LABEL}}/' | |
- name: API Cloudfront Distribution Cache Invalidation | |
uses: awact/cloudfront-action@master | |
env: | |
SOURCE_PATH: '/*' | |
AWS_REGION: 'us-east-1' | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
DISTRIBUTION_ID: ${{ secrets.API_CLOUDFRONT_DISTRIBUTION_ID }} | |
- name: Slack notification | |
if: always() # Pick up events even if the job fails or is canceled. | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_DAILY_DEPLOYS }} | |
STATUS: ${{job.status}} | |
uses: Ilshidur/action-slack@fb92a78a305a399cd6d8ede99d641f2b9224daf3 | |
with: | |
args: 'Action to label {{SNAPSHOT_ID}} as {{LABEL}}. Job status: {{STATUS}}' |