chore: include untagged workshop repos in updater #2456
This file contains hidden or 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: validate | |
| on: | |
| push: | |
| branches: ['main'] | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
| EPICSHOP_APP_COMMIT_SHA: ${{ github.sha }} | |
| jobs: | |
| lint: | |
| name: ⬣ Oxlint | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: ⬇️ Checkout repo | |
| uses: actions/checkout@v5 | |
| - name: ⎔ Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 26 | |
| cache: 'npm' | |
| - name: 📥 Download deps | |
| run: npm install --prefer-offline --no-audit --no-fund | |
| - name: 🔬 Lint | |
| run: npm run lint | |
| build: | |
| name: 🏗 Build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: ⬇️ Checkout repo | |
| uses: actions/checkout@v5 | |
| - name: ⎔ Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 26 | |
| cache: 'npm' | |
| - name: 📥 Download deps | |
| run: npm install --prefer-offline --no-audit --no-fund | |
| - name: 🏗 Build | |
| run: npm run build | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
| SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| NODE_ENV: production | |
| # run install again so the local .bin files get where they should go. | |
| - name: 📥 Download deps | |
| run: npm install --prefer-offline --no-audit --no-fund | |
| - name: 📦 Upload All Build Artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: all-build-artifacts | |
| path: | | |
| packages/workshop-app/build | |
| packages/workshop-app/dist | |
| packages/workshop-presence/dist | |
| packages/workshop-utils/dist | |
| packages/workshop-mcp/dist | |
| packages/workshop-cli/dist | |
| test: | |
| name: 🧪 Tests | |
| needs: [build] | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: ⬇️ Checkout repo | |
| uses: actions/checkout@v5 | |
| - name: ⎔ Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 26 | |
| cache: 'npm' | |
| - name: 📥 Download All Build Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: all-build-artifacts | |
| path: packages | |
| - name: 📥 Download deps | |
| run: npm install --prefer-offline --no-audit --no-fund | |
| - name: 🧪 Run tests | |
| run: npm test -- --no-watch | |
| typecheck: | |
| name: ʦ TypeScript | |
| needs: [build] | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: ⬇️ Checkout repo | |
| uses: actions/checkout@v5 | |
| - name: ⎔ Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 26 | |
| cache: 'npm' | |
| - name: 📥 Download All Build Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: all-build-artifacts | |
| path: packages | |
| - name: 📥 Download deps | |
| run: npm install --prefer-offline --no-audit --no-fund | |
| - name: 🔎 Type check | |
| run: npm run typecheck | |
| playwright: | |
| name: 🎭 Playwright | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.59.1-noble | |
| options: --user 1001 | |
| steps: | |
| - name: ⬇️ Checkout repo | |
| uses: actions/checkout@v5 | |
| - name: ⎔ Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 26 | |
| cache: 'npm' | |
| - name: 📥 Download deps | |
| run: npm install --prefer-offline --no-audit --no-fund | |
| - name: 🏗 Build | |
| run: npm run build | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
| SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} | |
| SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| NODE_ENV: production | |
| - name: 🎭 Playwright tests | |
| run: npx playwright test | |
| - name: 📊 Upload report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: playwright-report/ | |
| retention-days: 30 | |
| example: | |
| name: 🤹♂️ Example | |
| needs: [build] | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 5 | |
| steps: | |
| - name: ⬇️ Checkout repo | |
| uses: actions/checkout@v5 | |
| - name: ⎔ Setup node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 26 | |
| cache: 'npm' | |
| - name: 📥 Download All Build Artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: all-build-artifacts | |
| path: packages | |
| - name: 📥 Download deps | |
| run: npm install --prefer-offline --no-audit --no-fund | |
| - name: ▶️ Run setup script | |
| run: node ./scripts/setup.mjs | |
| working-directory: ./example | |
| continue-on-error: true | |
| release: | |
| name: 🚀 Release | |
| needs: [lint, test, typecheck, build, playwright] | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| permissions: | |
| contents: write # to be able to publish a GitHub release | |
| id-token: write # to enable use of OIDC for npm provenance | |
| issues: write # to be able to comment on released issues | |
| pull-requests: write # to be able to comment on released pull requests | |
| env: | |
| NPM_CONFIG_PROVENANCE: 'true' | |
| NPM_CONFIG_IGNORE_SCRIPTS: 'true' | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| if: | |
| ${{ github.repository == 'epicweb-dev/epicshop' && | |
| contains('refs/heads/main', github.ref) && github.event_name == 'push' }} | |
| steps: | |
| - name: ⬇️ Checkout repo | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: ⎔ Setup node | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 | |
| with: | |
| node-version: 26 | |
| registry-url: 'https://registry.npmjs.org' | |
| package-manager-cache: false | |
| - name: 📥 Download All Build Artifacts | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: all-build-artifacts | |
| path: packages | |
| - name: Install release dependencies | |
| run: npm install --ignore-scripts --prefer-offline --no-audit --no-fund | |
| - name: 🚀 Release | |
| run: npx tsx other/release.ts --dry-run=false |