95 lines
3.7 KiB
YAML
95 lines
3.7 KiB
YAML
name: PM Toolchain
|
|
on:
|
|
push:
|
|
branches: [ci/pm-toolchain]
|
|
pull_request:
|
|
paths:
|
|
- '.github/actions/setup-pm/**'
|
|
- '.github/actions/save-pm-cache/**'
|
|
- '.github/workflows/pm-toolchain*.yml'
|
|
- 'scripts/ci/*toolchain.py'
|
|
- 'tests/scripts/test_setup_toolchain.py'
|
|
- 'tests-js/setup-pm-post.test.mjs'
|
|
- 'tests-js/setup-pm-cache.test.mjs'
|
|
- 'pm/**'
|
|
workflow_dispatch:
|
|
permissions:
|
|
contents: read
|
|
concurrency:
|
|
group: pm-toolchain-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
jobs:
|
|
cold:
|
|
uses: ./.github/workflows/pm-toolchain-smoke.yml
|
|
with:
|
|
warm: false
|
|
warm:
|
|
needs: cold
|
|
uses: ./.github/workflows/pm-toolchain-smoke.yml
|
|
with:
|
|
warm: true
|
|
prune:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
- uses: ./.github/actions/setup-pm
|
|
with:
|
|
extras: '["dev"]'
|
|
prune-python-cache: true
|
|
cache-suffix: smoke-prune-${{ github.run_id }}-${{ github.run_attempt }}
|
|
- run: scripts/run_tests.sh tests/ci/test_cleanup_pm_toolchain_caches.py -j 1 -q
|
|
build-consumers:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 20
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
- uses: ./.github/actions/setup-pm
|
|
with:
|
|
toolchain: all
|
|
cache-suffix: smoke-consumers-${{ github.run_id }}-${{ github.run_attempt }}
|
|
- name: Install the docs tools into the command environment
|
|
run: |
|
|
uv pip install --python "$HERMES_PYTHON" ascii-guard==2.3.0 ruamel.yaml==0.18.17 httpx==0.28.1
|
|
python3 -c 'import ruamel.yaml,httpx; print(ruamel.yaml.__version__, httpx.__version__)'
|
|
- name: Install the locked desktop and test workspaces
|
|
run: npm ci --workspace apps/desktop --workspace tests-js --include-workspace-root --include=dev --ignore-scripts --no-audit --no-fund
|
|
- name: Exercise the actual after-pack relocation hook
|
|
working-directory: apps/desktop
|
|
run: node ../../node_modules/vitest/vitest.mjs run --project electron scripts/after-pack-toolchain.test.mjs
|
|
- name: Verify the icon and cache-post contracts
|
|
run: node node_modules/vitest/vitest.mjs run --root tests-js generate-icons.test.mjs setup-pm-post.test.mjs setup-pm-cache.test.mjs
|
|
- name: Exercise the payload and icon build entrypoints
|
|
run: |
|
|
npm run payload --workspace apps/desktop -- --help
|
|
node scripts/generate-icons.mjs
|
|
node scripts/generate-icons.mjs --check
|
|
|
|
windows-bundle-tools:
|
|
name: Cold Windows SDK (${{ matrix.runner }})
|
|
runs-on: ${{ matrix.runner }}
|
|
timeout-minutes: 15
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
runner: [windows-2025, windows-11-arm]
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
- uses: ./.github/actions/setup-pm
|
|
with:
|
|
toolchain: all
|
|
cache: false
|
|
cache-python: false
|
|
cache-node: false
|
|
- name: Install the locked bundle tooling without native postinstalls
|
|
run: npm ci --workspace apps/desktop --workspace tests-js --include-workspace-root --include=dev --ignore-scripts --no-audit --no-fund
|
|
- name: Provision from an empty cache and execute the SDK
|
|
working-directory: apps/desktop
|
|
run: node ../../node_modules/vitest/vitest.mjs run --project electron scripts/windows-bundle-tools.test.mjs scripts/msix-shared.test.mjs scripts/sign-msix.test.mjs scripts/batch-sign-binaries.test.mjs
|