Windows v1.0.3 Professional — EULA-gated tests, per-boot certificatio… #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build macOS app | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| run_tests: | |
| description: "Run pytest before packaging" | |
| required: false | |
| default: true | |
| type: boolean | |
| push: | |
| branches: ["main"] | |
| tags: ["v*"] | |
| permissions: | |
| contents: write | |
| jobs: | |
| build: | |
| name: arm64 on macos-14 | |
| runs-on: macos-14 | |
| env: | |
| PIP_NO_CACHE_DIR: "1" | |
| MPLBACKEND: Agg | |
| QECTOR_SILENT: "1" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.11" | |
| - name: Report build inputs | |
| run: | | |
| echo "runner arch : $(uname -m)" | |
| echo "target slice: arm64" | |
| python -c "import sys; sys.path.insert(0,'Mac'); import version; print('workbench :', version.WORKBENCH_VERSION); print('backend :', version.BACKEND_VERSION)" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip wheel | |
| pip install --find-links Mac/wheels --prefer-binary -r Mac/requirements.txt pyinstaller pytest pytest-asyncio | |
| - name: Run unit & decoder tests | |
| if: >- | |
| github.event_name != 'workflow_dispatch' || | |
| inputs.run_tests | |
| run: | | |
| cd Mac | |
| python -m pytest tests/test_backend.py tests/test_decoders.py tests/test_code_families.py tests/test_hardware_routing.py tests/test_security.py tests/test_cross_platform_paths.py -q | |
| - name: Build .app and .dmg | |
| run: | | |
| chmod +x Mac/build_macos.sh | |
| cd Mac | |
| ./build_macos.sh --arch arm64 | |
| - name: Verify the frozen app | |
| run: | | |
| set -e | |
| APP="Mac/dist/QectorWorkbench.app/Contents/MacOS/QectorWorkbench" | |
| test -x "$APP" || { echo "frozen binary missing at $APP"; ls -R Mac/dist | head -40; exit 1; } | |
| echo "--- decoder selftest ---" | |
| "$APP" --decoder-selftest | |
| echo "--- CLI version ---" | |
| "$APP" --cli version | |
| - name: Checksum the artifacts | |
| run: | | |
| cd Mac/dist | |
| shasum -a 256 *.dmg > SHA256SUMS.txt || true | |
| cat SHA256SUMS.txt || true | |
| ls -lh | |
| - name: Upload macOS artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: QectorWorkbench-macOS-arm64 | |
| path: | | |
| Mac/dist/*.dmg | |
| Mac/dist/SHA256SUMS.txt | |
| Mac/dist/SBOM.json | |
| retention-days: 30 | |
| if-no-files-found: error | |
| - name: Release to GitHub | |
| if: startsWith(github.ref, 'refs/tags/') | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| Mac/dist/*.dmg | |
| Mac/dist/SHA256SUMS.txt | |
| Mac/dist/SBOM.json | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |