Add diagnostics framework and quick hardware checks #7
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: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate: | |
| name: Source and fixture validation | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install validation tools | |
| run: sudo apt-get update && sudo apt-get install -y jq shellcheck | |
| - name: Run validation suite | |
| run: ci/validate.sh | |
| build-and-qualify: | |
| name: Build and QEMU qualification | |
| needs: validate | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 240 | |
| env: | |
| PROBEOS_QEMU_ACCEL: tcg | |
| PROBEOS_QEMU_TIMEOUT: 600 | |
| PROBEOS_MEMTEST_TIMEOUT: 180 | |
| PROBEOS_LAN_TIMEOUT: 600 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install qualification tools | |
| run: sudo apt-get update && sudo apt-get install -y curl jq ovmf qemu-system-x86 xorriso | |
| - name: Report QEMU acceleration | |
| run: | | |
| test ! -e /dev/kvm || ls -l /dev/kvm | |
| echo "QEMU acceleration: $PROBEOS_QEMU_ACCEL (software emulation forced)" | |
| - name: Build normal release artifacts | |
| run: ci/build-all.sh | |
| - name: Run Linux, offline, LAN/API, and Memtest qualification | |
| run: ci/qualify.sh | |
| - name: Generate and verify development metadata | |
| run: ci/generate-release-metadata.sh | |
| - name: Upload ISO development bundle | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: probeos-isos-${{ github.sha }} | |
| path: | | |
| out/probeos-x86_64-grub.iso | |
| out/probeos-x86_64-syslinux.iso | |
| out/probeos-x86-grub.iso | |
| out/probeos-x86-syslinux.iso | |
| out/SHA256SUMS | |
| out/release-manifest.json | |
| if-no-files-found: error | |
| retention-days: 14 | |
| - name: Upload diagnostic logs | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: probeos-ci-logs-${{ github.sha }} | |
| path: ci-logs/ | |
| if-no-files-found: warn | |
| retention-days: 14 |