diff --git a/.github/workflows/resource-indexer.yml b/.github/workflows/resource-indexer.yml new file mode 100644 index 000000000..6d3483bb0 --- /dev/null +++ b/.github/workflows/resource-indexer.yml @@ -0,0 +1,40 @@ +name: rebuild the resource collection index + +on: + # Run at ~4am UTC time which is (± an hour) 4am UK, 5am Switzerland, midnight + # US east coast, 9pm US west coast so that for most users (and most + # developers) the index regenerates overnight + schedule: + - cron: '* 4 * * *' + + # Manually triggered using GitHub's UI + workflow_dispatch: + +jobs: + rebuild-index: + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '16' + - run: npm ci + - uses: aws-actions/configure-aws-credentials@v4 + with: + aws-region: us-east-1 + role-to-assume: arn:aws:iam::XXX:role/GitHubActionsRoleResourceIndexer + credential-lifetime: 3600 # seconds, or 1 hour, which is currently the default and should be plenty + - name: Rebuild the index + run: | + node resourceIndexer/main.js \ + --gzip --output resources.json.gz + - name: Make a backup of the existing (current) index so that we can restore if needed + # AWS cli should be available on GitHub actions - to check + run: | + aws s3 cp s3://nextstrain-inventories/resources.json.gz s3://nextstrain-inventories/resources.json.gz.backup + - name: Upload the new index, overwriting the previous one + run: | + aws s3 cp resources.json.gz s3://nextstrain-inventories/resources.json.gz