minios testing #6
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: minios testing | |
| on: | |
| workflow_dispatch: | |
| push: | |
| jobs: | |
| gui-test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # ========================================= | |
| # INSTALL DEPENDENCIES | |
| # ========================================= | |
| - name: Install packages | |
| run: | | |
| sudo apt update | |
| sudo apt install -y \ | |
| build-essential \ | |
| gcc-multilib \ | |
| g++-multilib \ | |
| nasm \ | |
| qemu-system-i386 \ | |
| xvfb \ | |
| imagemagick \ | |
| x11-apps | |
| # ========================================= | |
| # FIX i686-elf TOOLS | |
| # ========================================= | |
| - name: Setup fake i686-elf toolchain | |
| run: | | |
| sudo ln -sf /usr/bin/gcc /usr/local/bin/i686-elf-gcc | |
| sudo ln -sf /usr/bin/ld /usr/local/bin/i686-elf-ld | |
| # ========================================= | |
| # PATCH MAKEFILE | |
| # ========================================= | |
| - name: Force 32-bit linker mode | |
| run: | | |
| sed -i 's/i686-elf-ld /i686-elf-ld -m elf_i386 /' Makefile | |
| # ========================================= | |
| # START VIRTUAL DISPLAY | |
| # ========================================= | |
| - name: Start X11 framebuffer | |
| run: | | |
| Xvfb :99 -screen 0 1280x720x24 & | |
| echo "DISPLAY=:99" >> $GITHUB_ENV | |
| # ========================================= | |
| # BUILD OS | |
| # ========================================= | |
| - name: Build minios | |
| run: | | |
| make | |
| # ========================================= | |
| # RUN QEMU | |
| # ========================================= | |
| - name: Start minios GUI | |
| run: | | |
| export DISPLAY=:99 | |
| timeout 25 qemu-system-i386 \ | |
| -kernel minios.bin \ | |
| -m 128M \ | |
| -vga std \ | |
| -rtc base=localtime \ | |
| -nic user,model=rtl8139 & | |
| sleep 15 | |
| # ========================================= | |
| # TAKE SCREENSHOT | |
| # ========================================= | |
| - name: Capture screenshot | |
| run: | | |
| export DISPLAY=:99 | |
| xwd -root -display :99 \ | |
| | convert xwd:- screenshot.png | |
| # ========================================= | |
| # UPLOAD SCREENSHOT | |
| # ========================================= | |
| - name: Upload screenshot | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: minios-gui-screenshot | |
| path: screenshot.png |