mirror of
https://gh-proxy.org/https://github.com/klinsmaya/workdsh.git
synced 2026-11-09 01:47:06 +08:00
107 lines
3.3 KiB
YAML
107 lines
3.3 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
DSH_TELEMETRY_DISABLED: '1'
|
|
|
|
jobs:
|
|
# Full product gate: build, typecheck, unit tests, and every headless smoke.
|
|
check:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
submodules: recursive
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22.23.2
|
|
- run: corepack enable
|
|
- name: Resolve Yarn cache folder
|
|
id: yarn-cache
|
|
run: echo "dir=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT"
|
|
- uses: actions/cache@v6
|
|
with:
|
|
path: ${{ steps.yarn-cache.outputs.dir }}
|
|
key: yarn-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock', '.yarnrc.yml') }}
|
|
- run: yarn install --immutable
|
|
- run: yarn check
|
|
|
|
# Windows-only logic and an unsigned NSIS build on a real Windows runner:
|
|
# updates, window options, pwsh sandbox, volume diagnostics, and packaging.
|
|
desktop-windows:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
submodules: recursive
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22.23.2
|
|
- run: corepack enable
|
|
- name: Resolve Yarn cache folder
|
|
id: yarn-cache
|
|
run: echo "dir=$(yarn config get cacheFolder)" >> "$env:GITHUB_OUTPUT"
|
|
- uses: actions/cache@v6
|
|
with:
|
|
path: ${{ steps.yarn-cache.outputs.dir }}
|
|
key: yarn-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock', '.yarnrc.yml') }}
|
|
- run: yarn install --immutable
|
|
- run: yarn check
|
|
- run: yarn dist:win
|
|
|
|
# macOS-only universal packaging smoke on a real macOS runner: the signed
|
|
# release is built manually on a credentialed machine, so an unsigned DMG
|
|
# here catches Intel and Apple Silicon packaging regressions before a manual
|
|
# release. No signing secrets ever reach this job.
|
|
desktop-macos:
|
|
runs-on: macos-latest
|
|
timeout-minutes: 60
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
submodules: recursive
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22.23.2
|
|
- run: corepack enable
|
|
- name: Resolve Yarn cache folder
|
|
id: yarn-cache
|
|
run: echo "dir=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT"
|
|
- uses: actions/cache@v6
|
|
with:
|
|
path: ${{ steps.yarn-cache.outputs.dir }}
|
|
key: yarn-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('yarn.lock', '.yarnrc.yml') }}
|
|
- run: yarn install --immutable
|
|
- run: yarn workspace dsh-community-market check
|
|
- run: yarn dist:mac-smoke
|
|
|
|
# Upstream toolchain smoke: the portable-shell scripts must resolve the
|
|
# pinned submodule's own Yarn/pnpm release on Windows.
|
|
upstream-command-windows:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
submodules: recursive
|
|
- uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 22.23.2
|
|
- run: corepack enable
|
|
- run: yarn check:layout
|
|
- run: yarn upstream:version
|