name: Processes and uploads sheet changes on: push: branches: - staging - master 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 }} 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' - id: 'auth' if: steps.filter.outputs.sheet == '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' uses: 'google-github-actions/setup-gcloud@v1' - name: 'Use gcloud CLI' if: steps.filter.outputs.sheet == 'true' run: 'gcloud info' - uses: oven-sh/setup-bun@v1 if: steps.filter.outputs.sheet == 'true' - run: bun install if: steps.filter.outputs.sheet == '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.sheet == 'true' env: DEST_DIR: ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }} - run: find ${{ env.DEST_DIR }} -maxdepth 1 -type d -exec sh -c 'cp -R --verbose "$(basename "{}")/translations" "{}/"' 2>/dev/null \; if: 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.sheet == 'true' env: DEST_DIR: ${{ runner.temp }}/${{ env.CDN_SHEETS_FOLDER }}