Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
name: Build Stack-chan Firmware
on:
push:
branches:
- develop
- main
paths:
- "firmware/**"
- "web/**"
- "docs/specs/**"
- "docs/operations/visual-programming-validation.md"
- "docs/operations/visual-programming-acceptance.md"
- ".github/actions/setup/action.yml"
- ".github/workflows/build.yml"
- "lefthook.yml"
pull_request:
branches:
- develop
- main
paths:
- "firmware/**"
- "web/**"
- "docs/specs/**"
- "docs/operations/visual-programming-validation.md"
- "docs/operations/visual-programming-acceptance.md"
- ".github/actions/setup/action.yml"
- ".github/workflows/build.yml"
- "lefthook.yml"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: build-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
biome:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup
- name: Run Biome
working-directory: ./firmware
run: npx biome ci . --error-on-warnings
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup
- name: Install web dependencies
working-directory: ./firmware
run: npm --prefix ../web ci
- name: Run firmware tests
working-directory: ./firmware
run: npm run test
- name: Run legacy name checks
working-directory: ./firmware
run: npm run check:legacy-names
- name: Run architecture checks
working-directory: ./firmware
run: npm run check:architecture
- name: Run manifest preflight
working-directory: ./firmware
run: source "$HOME/.local/share/xs-dev-export.sh" && npm run check:manifest
- name: Run Moddable module tests
working-directory: ./firmware
run: source "$HOME/.local/share/xs-dev-export.sh" && npm run test:moddable
- name: Smoke test Linux simulator startup
working-directory: ./firmware
run: source "$HOME/.local/share/xs-dev-export.sh" && npm run smoke:lin
- name: Smoke test mini app on Linux simulator
working-directory: ./firmware
run: source "$HOME/.local/share/xs-dev-export.sh" && npm run smoke:mini-app:lin
- name: Run web tool tests
working-directory: ./firmware
run: npm --prefix ../web test && npm --prefix ../web run check:editor-artifacts
web-visual:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup
with:
target-branch: "8.3.1"
install-emscripten: "true"
- name: Install web test dependencies
working-directory: ./firmware
run: npm --prefix ../web ci
- name: Audit web dependencies
working-directory: ./firmware
run: npm --prefix ../web audit --audit-level=high
- name: Build WebAssembly simulator
working-directory: ./firmware
run: source "$HOME/.local/share/xs-dev-export.sh" && npm run build:wasm
- name: Run responsive and editor browser tests
working-directory: ./firmware
run: |
npm --prefix ../web run test:visual
npm --prefix ../web run test:i18n-visual
- name: Upload browser screenshots
if: always()
uses: actions/upload-artifact@v7
with:
name: web-visual-screenshots
path: /tmp/stackchan-*.png
if-no-files-found: ignore
bf2c32c99This file is pinned to the selected release. Download the original to open it in your design tool.