Files
hermes-agent/.github/workflows/pm-toolchain.yml

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