fix(skills): harden /arcgis-to-portaljs from Phase 1 live Lewisville β¦ #36
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: CI | |
| # Build + smoke the packages, the scaffold CLI, and the catalog template on the | |
| # Node versions we support: 22 (active LTS) and 24 (current). Node 18 is EOL | |
| # (2025-04-30) and is intentionally not tested. See po-b4w. | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: Build packages + template (Node ${{ matrix.node }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: ['22', '24'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| # Root workspace install builds @portaljs/* via their prepare scripts. | |
| - name: Install workspace deps | |
| run: npm ci | |
| - name: Build packages | |
| run: | | |
| npm run build -w @portaljs/ckan-api-client-js | |
| npm run build -w @portaljs/core | |
| npm run build -w @portaljs/ckan | |
| - name: Lint @portaljs/ckan | |
| run: npm run lint -w @portaljs/ckan | |
| # create-portaljs is a plain-ESM CLI with no build step β just verify it | |
| # loads and its --help path runs on this Node version. | |
| - name: Smoke create-portaljs CLI | |
| run: | | |
| node --check packages/create-portaljs/index.mjs | |
| node packages/create-portaljs/index.mjs --help | |
| - name: Build catalog template | |
| working-directory: examples/portaljs-catalog | |
| run: | | |
| npm ci | |
| npm run build | |
| # site/ is NOT a root workspace β it has its own package-lock.json and | |
| # resolves @portaljs/* from the npm registry, so it builds standalone | |
| # (same as its production deploy). Node 22 only: site targets a single | |
| # runtime and its build (mddb + next build) is the slow path. See po-8sd. | |
| site: | |
| name: Build site (www.portaljs.com) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| - name: Build site | |
| working-directory: site | |
| run: | | |
| npm ci | |
| npm run build | |
| scaffold: | |
| name: Scaffold end-to-end (Node ${{ matrix.node }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: ['22', '24'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| - name: Install create-portaljs deps | |
| working-directory: packages/create-portaljs | |
| run: npm install --no-package-lock giget prompts | |
| # Scaffold from THIS ref (giget pulls the template from GitHub), then | |
| # install + build the generated portal. Exercises `npm create portaljs`. | |
| - name: Scaffold + build a portal | |
| env: | |
| # Avoid unauthenticated GitHub API rate limits when giget fetches. | |
| GIGET_AUTH: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| node packages/create-portaljs/index.mjs smoke-portal \ | |
| --yes --no-git \ | |
| --namespace theme \ | |
| --name "Smoke Portal" \ | |
| --ref "${{ github.head_ref || github.ref_name }}" | |
| cd smoke-portal | |
| npm run build |