Repository navigation
feat: mochi-lang v1 — interpreted language with indentation-based blocks #40
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 MochiOS ISO | |
| on: | |
| push: | |
| branches: [main, master] | |
| pull_request: | |
| branches: [main, master] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| container: | |
| image: archlinux:latest | |
| options: --privileged | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Arch Linux | |
| run: | | |
| pacman-key --init | |
| pacman-key --populate archlinux | |
| echo "Server = https://mirror.rackspace.com/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist | |
| pacman -Sy --noconfirm | |
| - name: Install build dependencies | |
| run: | | |
| pacman -S --needed --noconfirm \ | |
| archiso \ | |
| base-devel \ | |
| sudo \ | |
| go \ | |
| python \ | |
| python-urwid \ | |
| squashfs-tools \ | |
| dosfstools \ | |
| mtools \ | |
| openssl \ | |
| zstd \ | |
| fakeroot \ | |
| debugedit | |
| - name: Create mochi user with passwordless sudo | |
| run: | | |
| useradd -m mochi | |
| echo "mochi ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers | |
| chown -R mochi:mochi /home/mochi | |
| - name: Create GPG signing key | |
| run: | | |
| mkdir -p /home/mochi/.mochios-gnupg | |
| chmod 700 /home/mochi/.mochios-gnupg | |
| printf 'Key-Type: RSA\nKey-Length: 4096\nSubkey-Type: RSA\nSubkey-Length: 4096\nName-Real: MochiOS CI Signing Key\nName-Email: ci@mochios.dev\nExpire-Date: 0\n%%no-protection\n%%commit\n' | gpg --homedir /home/mochi/.mochios-gnupg --batch --gen-key | |
| mkdir -p repo/pubkey | |
| gpg --homedir /home/mochi/.mochios-gnupg --export --armor ci@mochios.dev > repo/pubkey/mochios-key.pub | |
| - name: Build packages | |
| run: | | |
| chown -R mochi:mochi "$PWD" | |
| chmod +x build.sh | |
| # Override paths for CI (we're at /__w/mochios/mochios or similar) | |
| export MOCHIOS_DIR="$PWD" | |
| export REPO_DIR="$PWD/repo" | |
| export OUT_DIR="$PWD/out" | |
| export ISO_DIR="$PWD/archiso-mochios" | |
| export WORK_DIR="$PWD/work" | |
| export GNUPGHOME="/home/mochi/.mochios-gnupg" | |
| export SIGN_KEY="ci@mochios.dev" | |
| bash build.sh 2>&1 | tee build.log; exit ${PIPESTATUS[0]} | |
| - name: Upload build log | |
| if: always() | |
| run: | | |
| if [ -f build.log ] && [ -s build.log ]; then | |
| echo "=== Full build log ===" | |
| cat build.log | |
| else | |
| echo "No build log found or empty" | |
| fi | |
| - name: List ISO output | |
| run: | | |
| ls -lh out/*.iso 2>/dev/null || echo "No ISO found" | |
| ls -lh repo/os/x86_64/ 2>/dev/null || echo "No packages found" | |
| - name: Upload ISO artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mochios-iso | |
| path: out/*.iso | |
| retention-days: 30 | |
| - name: Upload packages artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mochios-packages | |
| path: repo/os/x86_64/*.pkg.tar.zst | |
| retention-days: 30 |