Files
gods-eye-view/.github/workflows/ci.yml
T
Said Turksever db80d82b8d Add the Data Library: live regional datasets, tiles and packs
DATA LAYERS keeps its curated core layers; regional and niche sources
live in the Data Library, opened from Browse data library at the foot
of the panel. Each entry is a JSON manifest in src/library/entries/
pointing at a live upstream (query API, provider-hosted file or tile
endpoint), so nothing is bundled and a self-hosted instance hosts no
data. Sources without CORS go through one allowlisted /api/library
route. Kinds: dataset (GeoJSON, CSV, JSON records, ArcGIS, partitioned
GeoParquet), tiles (XYZ, WMS/ArcGIS bbox export, terrarium relief) and
pack. Selections persist and travel in share links as lib=, separate
from the core layer tokens. Library rows get Zoom and Remove icon
chips that work while the layer is off, rendered through RailChips.
Strings are translated in every locale.
2026-11-12 12:26:45 +00:00

155 lines
4.5 KiB
YAML

name: CI
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
verify:
name: Node ${{ matrix.node }}
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
node: [24.22.2, 26.x]
env:
PUPPETEER_SKIP_DOWNLOAD: '1'
GEV_REQUIRE_ALLOCATION_GATE: ${{ matrix.node == '24.22.2' && '1' || '0' }}
steps:
- name: Check out source
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
fetch-depth: 0
- name: Use Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ matrix.node }}
cache: npm
- name: Install locked dependencies
run: npm ci
- name: Run setup policy checks
run: npm run doctor -- --json
- name: Check adopted formatting
run: npm run format:check
- name: Check package boundaries
run: npm run check:boundaries
- name: Check published layer-token allocations
if: github.event_name == 'pull_request'
run: npm run layer-token:check -- --base-ref origin/main
- name: Check Data Library manifests and share tokens
if: github.event_name == 'pull_request'
run: npm run library:check -- --base-ref origin/main
- name: Run unit tests
run: npm test
- name: Build production bundle
run: npm run build
street-level-browser:
# Hermetic: every Mapillary request is answered from fixtures, so the
# dummy token below never leaves the page.
name: Street Level browser gate
runs-on: ubuntu-latest
timeout-minutes: 30
env:
GEV_REQUIRE_ALLOCATION_GATE: '0'
steps:
- name: Check out source
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
- name: Use Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 24.22.2
cache: npm
- name: Install locked dependencies and headless Chrome
run: npm ci
- name: Build production bundle with a dummy Mapillary token
env:
MAPILLARY_CLIENT_TOKEN: 'MLY|0|qa-fixture'
run: npm run build
- name: Start the preview server
env:
MAPILLARY_CLIENT_TOKEN: 'MLY|0|qa-fixture'
run: |
npx vite preview --port 4173 --strictPort > preview.log 2>&1 &
for attempt in $(seq 1 90); do
curl -sf http://localhost:4173/ > /dev/null && exit 0
sleep 2
done
cat preview.log
exit 1
- name: Street Level gate with Mapillary fixtures
run: npm run qa:street-level:fixtures -- --strict --url http://localhost:4173
- name: Preview server log
if: failure()
run: cat preview.log
- name: Upload gate evidence
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: browser-gate-evidence
path: qa-artifacts/
if-no-files-found: ignore
retention-days: 14
windows-onboarding:
name: Windows onboarding
runs-on: windows-latest
timeout-minutes: 20
env:
PUPPETEER_SKIP_DOWNLOAD: '1'
GEV_REQUIRE_ALLOCATION_GATE: '0'
steps:
- name: Check out source
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
- name: Use Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 24.22.2
cache: npm
- name: Run the Pinokio install path
run: node scripts/pinokio-install.mjs
- name: Check adopted formatting
run: npm run format:check
- name: Check package boundaries
run: npm run check:boundaries
- name: Run focused onboarding tests
run: node --test src/setupDoctor.test.mjs src/pinokioEnvironment.test.mjs src/pinokioPreflight.test.mjs src/pinokioLauncherContract.test.mjs src/keySetupHardening.test.mjs src/mapStartup.test.mjs src/hudSummaryResponse.test.mjs src/codexOauthRealtime.test.mjs
- name: Build production bundle
run: npm run build