name: Build linux-raveos kernel on: push: branches: - main paths: - 'linux-raveos/**' workflow_dispatch: concurrency: group: raveos-kernel-build cancel-in-progress: true jobs: build: runs-on: iso-builder steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install build dependencies run: | set -euo pipefail sudo pacman -S --needed --noconfirm \ base-devel clang llvm lld bc binutils cpio gettext \ libelf openssl pahole perl python rust rust-bindgen \ rust-src xxhash xz zlib zstd rsync - name: Fetch core repo via rsync run: | set -euo pipefail RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" rm -rf /tmp/raveos-core-repo mkdir -p /tmp/raveos-core-repo/x86_64 rsync -az -e "$RSYNC_SSH" \ root@10.66.66.1:/root/docker/repo/repo/x86_64/ /tmp/raveos-core-repo/x86_64/ || true mkdir -p /tmp/builtpkgs - name: Import GPG signing key run: | set -euo pipefail export GNUPGHOME=/tmp/raveos-gnupg rm -rf "$GNUPGHOME" mkdir -m 700 "$GNUPGHOME" echo "${{ secrets.GPG_PRIVATE_KEY }}" | base64 -d | gpg --batch --import - name: Check if already built id: check run: | set -euo pipefail CORE="/tmp/raveos-core-repo/x86_64" PKGVER=$(grep '^pkgver=' linux-raveos/PKGBUILD | cut -d= -f2) PKGREL=$(grep '^pkgrel=' linux-raveos/PKGBUILD | cut -d= -f2) FULLVER="${PKGVER}-${PKGREL}" echo "PKGVER=$PKGVER" >> $GITHUB_OUTPUT echo "PKGREL=$PKGREL" >> $GITHUB_OUTPUT if ls "$CORE"/linux-cachyos-${PKGVER}-${PKGREL}-*.pkg.tar.zst 2>/dev/null | grep -q .; then echo "SKIP=yes" >> $GITHUB_OUTPUT echo "linux-cachyos ${FULLVER} mar bent van -> skip" else echo "SKIP=no" >> $GITHUB_OUTPUT echo "linux-cachyos ${FULLVER} build indul..." fi - name: Build linux-raveos if: steps.check.outputs.SKIP != 'yes' run: | set -euo pipefail cd linux-raveos chmod -R 777 . sudo -u builder makepkg -s --noconfirm --needed mkdir -p /tmp/builtpkgs cp -v *.pkg.tar.zst /tmp/builtpkgs/ - name: Sign built packages if: steps.check.outputs.SKIP != 'yes' run: | set -euo pipefail export GNUPGHOME=/tmp/raveos-gnupg for pkg in /tmp/builtpkgs/*.pkg.tar.zst; do [ -f "$pkg" ] || continue gpg --batch --yes --pinentry-mode loopback \ --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor "$pkg" done - name: Update repo database and sync to VPS if: steps.check.outputs.SKIP != 'yes' run: | set -euo pipefail BUILT=$(ls /tmp/builtpkgs/*.pkg.tar.zst 2>/dev/null || true) if [ -z "$BUILT" ]; then echo "Nincs csomag -> kihagyva" exit 0 fi CORE="/tmp/raveos-core-repo/x86_64" for pkg in $BUILT; do PKGFILE=$(basename "$pkg") PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//') rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true cp -v "$pkg" "$CORE/" [ -f "$pkg.sig" ] && cp -v "$pkg.sig" "$CORE/" done export GNUPGHOME=/tmp/raveos-gnupg cd "$CORE" ALLPKGS=$(ls *.pkg.tar.zst) repo-add raveos-core-repo.db.tar.xz $ALLPKGS for f in raveos-core-repo.db.tar.xz raveos-core-repo.files.tar.xz; do gpg --batch --yes --pinentry-mode loopback \ --passphrase "${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}" \ --local-user 25C7668F1235F5664F037671BDB2A9CE6EBFF113 \ --detach-sign --no-armor -o "$f.sig" "$f" done ln -sf raveos-core-repo.db.tar.xz.sig raveos-core-repo.db.sig ln -sf raveos-core-repo.files.tar.xz.sig raveos-core-repo.files.sig RSYNC_SSH="ssh -p 2222 -i $HOME/.ssh/vps_backup_key -o StrictHostKeyChecking=no" rsync -az --delete -e "$RSYNC_SSH" \ "$CORE/" root@10.66.66.1:/root/docker/repo/repo/x86_64/ echo "::notice title=Kernel published::linux-raveos ${{ steps.check.outputs.PKGVER }}-${{ steps.check.outputs.PKGREL }}" - name: Cleanup if: always() run: | gpgconf --homedir /tmp/raveos-gnupg --kill gpg-agent || true sudo rm -rf /tmp/raveos-gnupg || true sudo rm -rf /tmp/builtpkgs || true sudo rm -rf /tmp/raveos-core-repo || true sudo rm -rf linux-raveos/src linux-raveos/pkg || true df -h