name: Build ISO # Full ISO build is ~15-20 min. Only run on push-to-main and manual # dispatch so feature-branch iteration stays fast. See # memory/project_ci_branching for the rationale. on: push: branches: [main] workflow_dispatch: concurrency: group: build-iso-${{ github.ref }} cancel-in-progress: true jobs: build-iso: # Run directly on the runner host, not inside a job container. # `build.sh` does `docker run -v $REPO_ROOT:/work archlinux:latest`, # and host docker interprets the volume source as a host path — so # $REPO_ROOT has to be a path on the host, which it only is when # we skip the job-container wrapping. The runner VM has git + docker. runs-on: self-hosted timeout-minutes: 30 steps: - uses: actions/checkout@v4 - name: Build ISO run: ./iso/build.sh - name: Report ISO hash run: | iso=$(ls iso/out/*.iso | head -1) echo "ISO: $iso" sha256sum "$iso" - name: Upload ISO artifact # v4+ isn't supported on Forgejo yet (uses newer @actions/artifact # protocol that Forgejo's GHES-compatible API doesn't implement). uses: actions/upload-artifact@v3 with: name: furtka-iso path: iso/out/*.iso retention-days: 14 if-no-files-found: error