Phase 4 — native apps: - quill/: text editor (monospace, double-buffered, find bar, undo, open/save) - lens/: image viewer using imlib2 (zoom, pan, rotate, directory nav) - wm/src/menu.c: launch quill instead of mousepad - iso/docker/entrypoint.sh: add imlib2 package; install quill + lens binaries - skykit/template/: developer app template demonstrating the SkyKit API Phase 5 — file system and search: - rigel/rigel.c: right-click context menu (open, open in quill, copy path, rename, trash, properties); Ctrl+F search/filter bar with name highlighting; F2 rename-in-place overlay; Delete key moves to trash Phase 6 — distribution: - .github/workflows/build-iso.yml: GitHub Actions CI that compiles all components and builds a bootable ISO on every tag push; creates a GitHub release with sha256 checksums Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
109 lines
3.1 KiB
YAML
109 lines
3.1 KiB
YAML
name: Build OrionOS ISO
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
inputs:
|
|
release_name:
|
|
description: 'Release label (e.g. v0.1-mintaka)'
|
|
required: false
|
|
default: 'nightly'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 90
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Install dependencies on host
|
|
run: |
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
libx11-dev libxft-dev libfontconfig1-dev \
|
|
libimlib2-dev \
|
|
pkg-config \
|
|
xorg-dev
|
|
|
|
- name: Build OrionOS shell components
|
|
run: |
|
|
make skykit rigel quill lens || true
|
|
make wm deskbar launcher installer nebula orionpkg || true
|
|
|
|
- name: Build ISO (Docker)
|
|
run: |
|
|
chmod +x build-iso.sh
|
|
./build-iso.sh
|
|
env:
|
|
DOCKER_BUILDKIT: 1
|
|
|
|
- name: Verify ISO was created
|
|
run: |
|
|
ls -lh dist/*.iso
|
|
sha256sum dist/*.iso > dist/SHA256SUMS
|
|
|
|
- name: Upload ISO as artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: orionos-iso-${{ github.run_number }}
|
|
path: |
|
|
dist/*.iso
|
|
dist/SHA256SUMS
|
|
retention-days: 30
|
|
|
|
- name: Create GitHub Release
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
name: OrionOS ${{ github.ref_name }}
|
|
body: |
|
|
## OrionOS ${{ github.ref_name }}
|
|
|
|
Bootable live ISO. Burn to USB with:
|
|
```
|
|
sudo dd if=orionos.iso of=/dev/sdX bs=4M status=progress && sync
|
|
```
|
|
Or use [Balena Etcher](https://etcher.balena.io/).
|
|
|
|
### What's included
|
|
- OrionWM — tiling/floating window manager
|
|
- Rigel — native file manager (right-click menu, search)
|
|
- Quill — native text editor
|
|
- Lens — native image viewer
|
|
- OrionDeskbar — application bar
|
|
- Nebula — system settings
|
|
- OrionPkg — package manager GUI
|
|
- OrionInstall — graphical installer
|
|
|
|
### Verify
|
|
```
|
|
sha256sum -c SHA256SUMS
|
|
```
|
|
files: |
|
|
dist/*.iso
|
|
dist/SHA256SUMS
|
|
draft: false
|
|
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}
|
|
|
|
# Separate job: build and push Docker image used by the ISO builder
|
|
docker:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build ISO builder image
|
|
run: docker build -t orionos-builder:latest iso/docker/
|
|
- name: Smoke test builder
|
|
run: docker run --rm orionos-builder:latest echo "Builder image OK"
|