Files
samios/.gitea/workflows/ci.yml
T
Sami Ahmed 658a8541e9
SamiOS CI / lint-and-test (push) Successful in 14s
v0.2.0: WSL desktop, branding, GRUB theme, CI, installer, fonts, voice architecture
Major update adding full desktop environment support, complete branding suite,
and project infrastructure:

Desktop (WSL):
- KDE Plasma + SDDM + Dolphin/Konsole/Kate/Firefox setup script
- Windows 11 dark/light color schemes
- PipeWire audio stack
- WSLg-compatible launch script
- SamiOS CLI tool (v0.2.0) with desktop command

Branding:
- Logos: face-on-pyramid with and without text (500px)
- Icons: square + launcher (256/512/1024px) + SVG vector
- Wallpapers: 1920x1080, 4K, clean variant (PIL-generated)
- GRUB theme: full cobalt blue (#1424CE) theme with pyramid background
- SDDM theme: SamiOS login screen configuration
- Branding README with palette, typography, usage guidelines

Fonts:
- Sami Grotesk (Helvetica-like) as default system/UI font
- Sami Sans as secondary
- Full Sami font family support (excluding 7777 personal branding)
- fontconfig rules mapping Helvetica/Arial → Sami Grotesk
- Font policy enforcement in samios CLI

Infrastructure:
- Automated installer (samios-installer.sh): partition, format, pacstrap, bootloader
- PKGBUILD for samios-branding package
- Test suite: shell tests for profiledef, packages, pacman.conf, CLI, font policy
- Makefile: test, lint, check, build, clean targets
- Gitea Actions CI workflow
- Voice integration architecture document (SamiType × SamiOS)
- Updated roadmap reflecting completed phases
2026-08-11 03:39:47 -07:00

104 lines
3.6 KiB
YAML

name: SamiOS CI
on:
push:
branches: [master, main]
pull_request:
branches: [master, main]
jobs:
lint-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install shellcheck
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq shellcheck
- name: Install Make
run: |
if ! command -v make >/dev/null 2>&1; then
sudo apt-get install -y -qq make
fi
# ── Shellcheck ───────────────────────────────────────────────────
- name: Run shellcheck on all shell scripts
run: make lint
# ── Profile structure validation ─────────────────────────────────
- name: Validate archiso profile structure
run: |
set -e
PROFILE_DIR="packaging/archiso"
echo "Validating profile structure..."
# Required files
for f in profiledef.sh packages.x86_64 pacman.conf; do
if [ ! -f "$PROFILE_DIR/$f" ]; then
echo "ERROR: Missing required file: $PROFILE_DIR/$f"
exit 1
fi
echo " ✓ Found: $PROFILE_DIR/$f"
done
# profiledef.sh must have valid bash syntax
if ! bash -n "$PROFILE_DIR/profiledef.sh"; then
echo "ERROR: profiledef.sh has syntax errors"
exit 1
fi
echo " ✓ profiledef.sh syntax OK"
# packages.x86_64 must have at least one non-comment line
pkg_count=$(grep -vE '^\s*#|^\s*$' "$PROFILE_DIR/packages.x86_64" | wc -l)
if [ "$pkg_count" -lt 1 ]; then
echo "ERROR: packages.x86_64 has no packages listed"
exit 1
fi
echo " ✓ packages.x86_64 has $pkg_count package(s)"
# pacman.conf must have [options] and at least one repo section
if ! grep -q '\[options\]' "$PROFILE_DIR/pacman.conf"; then
echo "ERROR: pacman.conf missing [options] section"
exit 1
fi
if ! grep -qE '^\[(core|extra)\]' "$PROFILE_DIR/pacman.conf"; then
echo "ERROR: pacman.conf missing [core] or [extra] section"
exit 1
fi
echo " ✓ pacman.conf structure OK"
# Required airootfs files
for f in airootfs/usr/local/bin/samios; do
if [ ! -f "$PROFILE_DIR/$f" ]; then
echo "ERROR: Missing: $PROFILE_DIR/$f"
exit 1
fi
echo " ✓ Found: $PROFILE_DIR/$f"
done
# samios CLI must be executable
if [ ! -x "$PROFILE_DIR/airootfs/usr/local/bin/samios" ]; then
echo "ERROR: samios CLI is not executable"
exit 1
fi
echo " ✓ samios CLI is executable"
# Boot mode configs
for f in grub/grub.cfg syslinux/syslinux.cfg efiboot/loader/loader.conf; do
if [ ! -f "$PROFILE_DIR/$f" ]; then
echo "WARNING: Missing optional boot config: $PROFILE_DIR/$f"
else
echo " ✓ Found: $PROFILE_DIR/$f"
fi
done
echo ""
echo "Profile structure validation PASSED ✓"
# ── Test suite ───────────────────────────────────────────────────
- name: Run test suite
run: make test