diff --git a/.github/workflows/build-iso.yml b/.github/workflows/build-iso.yml index 1958c0b..56416df 100644 --- a/.github/workflows/build-iso.yml +++ b/.github/workflows/build-iso.yml @@ -1,24 +1,100 @@ -name: Build AeThex-OS +name: Build AeThex Linux ISO on: push: branches: - main workflow_dispatch: + inputs: + release: + description: "Create a GitHub Release with ISO artifact" + type: boolean + default: false jobs: - build: + build_client: runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: '22' - - - run: npm install - - - run: npm run build - - - run: echo "✅ Build successful" + + - name: Install dependencies + run: npm install + + - name: Build client + run: npm run build + + - name: Client build complete + run: echo "✅ Client build successful" + + build_iso: + needs: build_client + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install ISO build dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + debootstrap \ + squashfs-tools \ + xorriso \ + grub-pc-bin \ + grub-efi-amd64-bin \ + isolinux \ + syslinux-common \ + curl + + - name: Build AeThex Linux ISO (if script exists) + run: | + set -e + if [ -f script/build-linux-iso.sh ]; then + bash script/build-linux-iso.sh + else + echo "⚠️ script/build-linux-iso.sh not found; creating placeholder artifact" + mkdir -p aethex-linux-build + echo "AeThex Linux ISO build script is not yet implemented." > aethex-linux-build/README.txt + fi + + - name: Verify ISO artifact + run: | + set -e + if ls aethex-linux-build/AeThex-Linux-*.iso 1> /dev/null 2>&1; then + echo "✅ ISO built successfully" + ls -lh aethex-linux-build/AeThex-Linux-*.iso + sha256sum aethex-linux-build/AeThex-Linux-*.iso > aethex-linux-build/SHA256 + cat aethex-linux-build/SHA256 + else + echo "ℹ️ No ISO found; uploading placeholder artifacts (if any)" + ls -lah aethex-linux-build || true + fi + + - name: Upload ISO artifacts + uses: actions/upload-artifact@v4 + with: + name: AeThex-Linux-ISO + path: | + aethex-linux-build/** + if-no-files-found: warn + retention-days: 90 + + - name: Create GitHub Release (optional) + if: ${{ github.event.inputs.release == 'true' }} + uses: softprops/action-gh-release@v1 + with: + tag_name: iso-${{ github.run_number }} + name: AeThex Linux ISO build #${{ github.run_number }} + draft: false + prerelease: false + files: | + aethex-linux-build/AeThex-Linux-*.iso + aethex-linux-build/SHA256 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/script/build-linux-iso.sh b/script/build-linux-iso.sh new file mode 100644 index 0000000..ff3677e --- /dev/null +++ b/script/build-linux-iso.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +set -euo pipefail + +# AeThex Linux ISO build script (placeholder) +# This script creates the expected artifact directory so CI can succeed. +# Replace with a real implementation when ready. + +echo "Starting AeThex Linux ISO build (placeholder)" + +# Create artifact directory +mkdir -p aethex-linux-build + +# Placeholder content +cat > aethex-linux-build/README.txt << 'EOF' +AeThex Linux ISO build script is not yet implemented. +This is a placeholder artifact to validate CI wiring. + +When implemented, this folder should contain: +- AeThex-Linux-.iso +- SHA256 (checksum file) +EOF + +# Exit successfully +echo "Placeholder ISO build complete."