name: Build raveos packages and publish to raveos-core-repo (SAFE) on: push: branches: ["main"] workflow_dispatch: concurrency: group: raveos-theme-module-build-publish cancel-in-progress: true jobs: build: runs-on: iso-builder steps: - name: Checkout PKGBUILDs repo uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install build tools run: | set -euo pipefail sudo pacman -S --needed --noconfirm \ base-devel git pacman-contrib cmake qt6-tools go - name: Clone core repo run: | set -euo pipefail rm -rf /tmp/raveos-core-repo git clone --depth 1 git@git.rp1.hu:RaveOS/raveos-core-repo.git /tmp/raveos-core-repo mkdir -p /tmp/builtpkgs - name: Build raveos-calamares-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-calamares-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-calamares-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-calamares-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -f *.pkg.tar.zst || true makepkg -s --noconfirm -f cp -v raveos-calamares-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-calamares-module run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-calamares-module PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-calamares-module-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-calamares-module ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -f *.pkg.tar.zst || true makepkg -s --noconfirm -f cp -v raveos-calamares-module-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-calamares run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-calamares PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/calamares-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-calamares ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -f *.pkg.tar.zst || true makepkg -s --noconfirm -f PKG=$(ls -t *.pkg.tar.zst | grep -v -- '-debug-' | head -n 1) cp -v "$PKG" /tmp/builtpkgs/ - name: Build raveos-plasma-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-plasma-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-plasma-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-plasma-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-plasma-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-gnome-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-gnome-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-gnome-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-gnome-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-gnome-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-hyprland-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-hyprland-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-hyprland-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-hyprland-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-hyprland-theme-*.pkg.tar.zst /tmp/builtpkgs/ rm -f /tmp/builtpkgs/raveos-hyprland-theme-debug-*.pkg.tar.zst || true - name: Build raveos-cosmic-theme run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-cosmic-theme PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-cosmic-theme-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-cosmic-theme ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-cosmic-theme-*.pkg.tar.zst /tmp/builtpkgs/ - name: Build raveos-tools run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" cd raveos-tools PKGVER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) if ls "$CORE/raveos-tools-${PKGVER}-${PKGREL}-"*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "raveos-tools ${PKGVER}-${PKGREL} unchanged -> skip" exit 0 fi rm -rf build || true makepkg -s --noconfirm -f cp -v build/raveos-tools-*.pkg.tar.zst /tmp/builtpkgs/ - name: Mirror linux-cachyos + sddm-astronaut-theme from Chaotic-AUR run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" MIRRORS="https://de-mirror.chaotic.cx/chaotic-aur/x86_64 https://cdn-mirror.chaotic.cx/chaotic-aur/x86_64 https://geo-mirror.chaotic.cx/chaotic-aur/x86_64" for PKG in linux-cachyos linux-cachyos-headers sddm-astronaut-theme; do LATEST="" for MIRROR in $MIRRORS; do LATEST=$(curl -fsSL --retry 3 --retry-delay 5 --max-time 15 "${MIRROR}/" \ | grep -o "href=\"${PKG}-[0-9][^\"]*\.pkg\.tar\.zst\"" \ | sed 's/href="//;s/"//' | head -1) [ -n "$LATEST" ] && break done if [ -z "$LATEST" ]; then echo "$PKG nem talalhato egyik mirrorban sem -> skip" continue fi if [[ ! "$LATEST" =~ ^[a-zA-Z0-9_.+-]+\.pkg\.tar\.zst$ ]]; then echo "HIBA: Ervenytelen csomagfajlnev: $LATEST -> skip" continue fi if [ -f "$CORE/$LATEST" ]; then echo "$PKG $LATEST mar bent van a core repoban -> skip" continue fi echo "$PKG uj verzio: $LATEST - letoltes..." DOWNLOADED=0 for MIRROR in $MIRRORS; do if curl -fL --retry 3 --retry-delay 5 --max-time 300 --progress-bar \ "${MIRROR}/${LATEST}" -o "/tmp/builtpkgs/${LATEST}" 2>/dev/null; then echo "$PKG letoltve OK ($MIRROR)" DOWNLOADED=1 break fi echo "$PKG letoltes sikertelen: $MIRROR -> kovetkezo" rm -f "/tmp/builtpkgs/${LATEST}" || true done [ "$DOWNLOADED" -eq 0 ] && echo "$PKG letoltes minden mirrorrol sikertelen -> skip" || true done - name: Publish packages to raveos-core-repo (only if changed) run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" mkdir -p "$CORE" BUILT=$(ls /tmp/builtpkgs/*.pkg.tar.zst 2>/dev/null || true) if [ -z "$BUILT" ]; then echo "No packages built -> nothing to publish" exit 0 fi cd /tmp/raveos-core-repo git config user.name "Forgejo Actions" git config user.email "actions@forgejo.local" for pkg in $BUILT; do PKGFILE=$(basename "$pkg") PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') if [[ ! "$PKGNAME" =~ ^[a-zA-Z0-9_+-]+$ ]]; then echo "HIBA: Ervenytelen csomagnev: $PKGNAME -> skip" continue fi rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true cp -v "$pkg" "$CORE/" done git add -A git commit -m "Publish packages ${GITHUB_SHA:0:7}" git push origin main TAG="vrepo-$(date +%Y%m%d-%H%M%S)" git tag -a "$TAG" -m "Trigger repo-add (${GITHUB_SHA:0:7})" git push origin "$TAG" echo "::notice title=Published packages::Tag $TAG" - name: Cleanup (SAFE) if: always() run: | sudo rm -rf /tmp/builtpkgs || true sudo rm -rf /tmp/raveos-core-repo || true sudo rm -rf /var/cache/pacman/pkg/* || true df -h