Skip to content

Validate Windows MSIX without publishing; record B13 release blocker #1

Validate Windows MSIX without publishing; record B13 release blocker

Validate Windows MSIX without publishing; record B13 release blocker #1

# Build and validate without releases, tags, Store uploads or signing changes.
# Read-only repository permissions keep this distinct from windows-msix.yml.
name: Windows MSIX validation (artifact only)
on:
workflow_dispatch:
pull_request:
branches: [main]
paths:
- ".github/workflows/windows-artifact.yml"
permissions:
contents: read
jobs:
msix:
runs-on: windows-latest
timeout-minutes: 90
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install build dependencies
run: python -m pip install -r requirements.txt pyinstaller pytest pyflakes
- name: Windows offline tests and real ConPTY
shell: pwsh
env:
QT_QPA_PLATFORM: offscreen
MEDHA_REAL_CONPTY_TEST: "1"
run: |
python -m pyflakes medha
if ($LASTEXITCODE -ne 0) { throw "Lint failed" }
python -m pytest -q -rs
if ($LASTEXITCODE -ne 0) { throw "Windows tests failed" }
- name: Verify source GUI startup
shell: pwsh
run: |
$env:MEDHA_SMOKE_RESULT = Join-Path $env:RUNNER_TEMP "source-gui.json"
python -m medha --smoke-gui
if ($LASTEXITCODE -ne 0) { throw "Source GUI startup failed" }
- name: Download offline toolchains (GCC, JDK 25, Python) + checksums
shell: pwsh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: packaging\windows\fetch_toolchains.ps1
- name: Build MSIX (includes MEDHA.exe --selftest with bundled GCC)
shell: pwsh
run: packaging\windows\build_msix.ps1
- name: Source Windows interactive acceptance with bundled GCC
shell: pwsh
run: |
$env:PATH = "$pwd/toolchains/mingw64/bin;" + $env:PATH
python tools/windows_acceptance.py
if ($LASTEXITCODE -ne 0) { throw "Windows acceptance failed" }
- name: Collect startup log
if: always()
shell: pwsh
run: |
New-Item -ItemType Directory -Force dist | Out-Null
$log = Join-Path $env:LOCALAPPDATA "MEDHA\startup.log"
if (Test-Path $log) { Copy-Item $log dist/startup.log }
- uses: actions/upload-artifact@v4
if: always()
with:
name: medha-windows-validation
path: |
dist/*.msix
dist/*.zip
dist/gui-smoke.*
dist/startup.log
dist/acceptance/
toolchains/MANIFEST.json