Ensures that force-updates take precedence over individual sheet changes #41
Workflow file for this run
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
name: Processes changed character-sheets and updates CDN bucket and/or sheet-http database as needed | |
on: push | |
env: | |
NPM_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }} | |
jobs: | |
deployment: | |
if: github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/master' | |
environment: ${{ github.ref_name == 'master' && 'production' || 'staging' }} | |
runs-on: ubuntu-latest | |
env: | |
CDN_SHEETS_FOLDER: ${{ vars.CDN_SHEETS_FOLDER }} | |
# Set job outputs to values from filter step | |
outputs: | |
sheet: ${{ steps.filter.outputs.sheet }} | |
sheet-json: ${{ steps.filter.outputs.sheet_files }} | |
force-update: ${{ steps.filter.outputs.force-update }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
# Enable listing of files matching each filter. | |
# Paths to files will be available in `${FILTER_NAME}_files` output variable. | |
# Paths will be escaped and space-delimited. | |
# Output is usable as command-line argument list in Linux shell | |
list-files: shell | |
filters: | | |
sheet: | |
- added|modified: '*/sheet.json' | |
force-update: | |
- added|modified: 'build.toml' | |
- id: 'auth' | |
if: steps.filter.outputs.sheet == 'true' || steps.filter.outputs.force-update == 'true' | |
uses: 'google-github-actions/auth@v1' | |
with: | |
credentials_json: '${{ secrets.SHEET_HTTP_GCP_KEYFILE }}' | |
- name: 'Set up Cloud SDK' | |
if: steps.filter.outputs.sheet == 'true' || steps.filter.outputs.force-update == 'true' | |
uses: 'google-github-actions/setup-gcloud@v1' | |
- name: 'Use gcloud CLI' | |
if: steps.filter.outputs.sheet == 'true' || steps.filter.outputs.force-update == 'true' | |
run: 'gcloud info' | |
- uses: oven-sh/setup-bun@v1 | |
if: steps.filter.outputs.sheet == 'true' || steps.filter.outputs.force-update == 'true' | |
- run: bun install | |
if: steps.filter.outputs.sheet == 'true' || steps.filter.outputs.force-update == 'true' | |
working-directory: contrib/sheet-pixie | |
# Handles when sheets have been updated individually | |
- run: bun run contrib/sheet-pixie/index.ts ${{ steps.filter.outputs.sheet_files }} | |
if: steps.filter.outputs.force-update != 'true' && steps.filter.outputs.sheet == 'true' | |
env: | |
DEST_DIR: ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }} | |
- run: gcloud storage rsync --project=roll20-actual ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }} gs://roll20-cdn/${{ env.CDN_SHEETS_FOLDER }} --cache-control='no-cache' --recursive | |
if: steps.filter.outputs.force-update != 'true' && steps.filter.outputs.sheet == 'true' | |
env: | |
DEST_DIR: ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }} | |
# Handles when a force-update has been requested (meaning all sheets will be re-built and deployed) | |
- run: make all | |
if: steps.filter.outputs.force-update == 'true' | |
env: | |
DEST_DIR: ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }} | |
- run: gcloud storage rsync --project=roll20-actual ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }} gs://roll20-cdn/${{ env.CDN_SHEETS_FOLDER }} --delete-unmatched-destination-objects --cache-control='no-cache' --recursive | |
if: steps.filter.outputs.force-update == 'true' | |
env: | |
DEST_DIR: ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }} |