Fix TUI bugs and UX issues from real hardware testing #59
Workflow file for this run
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: NeuralDrive Build & Test | |
| on: | |
| pull_request: | |
| push: | |
| tags: | |
| - 'v*' | |
| jobs: | |
| build-iso: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| # remove unused packages to free up disk space for the build | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc \ | |
| /usr/local/share/boost /usr/local/graalvm /usr/local/.ghcup \ | |
| /usr/local/share/powershell /usr/local/share/chromium \ | |
| /usr/local/lib/node_modules | |
| sudo docker image prune -af | |
| df -h / | |
| - name: Derive version | |
| id: version | |
| run: | | |
| if [[ "$GITHUB_REF" == refs/tags/v* ]]; then | |
| echo "value=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "value=dev-$(date +%Y.%m.%d)-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Build ISO via Docker | |
| run: docker compose run -e NEURALDRIVE_VERSION=${{ steps.version.outputs.value }} builder | |
| - name: Inspect ISO GRUB config | |
| run: | | |
| ISO=$(ls output/neuraldrive-*.iso) | |
| mkdir -p /tmp/iso_mount | |
| sudo mount -o loop,ro "$ISO" /tmp/iso_mount | |
| echo "=== /live/ directory contents ===" | |
| ls -la /tmp/iso_mount/live/ 2>/dev/null || echo "/live/ directory NOT FOUND" | |
| echo "=== /.disk/ contents ===" | |
| ls -la /tmp/iso_mount/.disk/ 2>/dev/null || echo "/.disk/ directory NOT FOUND" | |
| cat /tmp/iso_mount/.disk/info 2>/dev/null || echo "No .disk/info" | |
| echo "=== GRUB config files ===" | |
| find /tmp/iso_mount -name "grub.cfg" -o -name "*.cfg" | grep -i grub | head -20 | |
| echo "=== Main grub.cfg ===" | |
| cat /tmp/iso_mount/boot/grub/grub.cfg 2>/dev/null || echo "No /boot/grub/grub.cfg" | |
| echo "=== EFI embedded grub.cfg (x86_64) ===" | |
| cat /tmp/iso_mount/boot/grub/x86_64-efi/grub.cfg 2>/dev/null || echo "Not found" | |
| echo "=== EFI embedded grub.cfg (i386) ===" | |
| cat /tmp/iso_mount/boot/grub/i386-efi/grub.cfg 2>/dev/null || echo "Not found" | |
| echo "=== Kernel cmdline check ===" | |
| grep -r "console=" /tmp/iso_mount/boot/grub/grub.cfg 2>/dev/null || echo "No console= in grub.cfg" | |
| sudo umount /tmp/iso_mount | |
| - name: Run Boot Test (QEMU) | |
| id: boot-test | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y qemu-system-x86 ovmf | |
| sudo chmod 666 /dev/kvm | |
| chmod +x tests/test-boot.sh | |
| tests/test-boot.sh output/neuraldrive-*.iso | |
| - name: Upload boot log | |
| if: always() && steps.boot-test.outcome != 'skipped' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: boot-diagnostic-log | |
| path: /tmp/neuraldrive-boot.log | |
| retention-days: 14 | |
| # TODO: Upload ISO to Internet Archive on release tags. | |
| # See plan/future-iso-storage.md for setup instructions. | |
| # - name: Upload ISO to Internet Archive | |
| # if: startsWith(github.ref, 'refs/tags/v') | |
| # run: | | |
| # pip install internetarchive | |
| # ia upload neuraldrive-${{ github.ref_name }} output/neuraldrive-*.iso \ | |
| # --metadata="title:NeuralDrive ${{ github.ref_name }}" \ | |
| # --metadata="mediatype:software" \ | |
| # --metadata="collection:opensource" \ | |
| # --retries 10 | |
| # env: | |
| # IA_ACCESS_KEY_ID: ${{ secrets.IA_ACCESS_KEY }} | |
| # IA_SECRET_ACCESS_KEY: ${{ secrets.IA_SECRET_KEY }} | |
| validate-config: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install yq | |
| run: | | |
| sudo curl -L https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -o /usr/bin/yq | |
| sudo chmod +x /usr/bin/yq | |
| - name: Validate example config | |
| run: | | |
| chmod +x scripts/validate-config.sh | |
| scripts/validate-config.sh neuraldrive-build.yaml.example |