From 42595979fc4672f21a2535225003b6efdc2b883f Mon Sep 17 00:00:00 2001 From: Mitsuba100 Date: Tue, 14 Apr 2026 15:46:48 +0200 Subject: [PATCH] Update .github/workflows/update-repo.yml --- .github/workflows/update-repo.yml | 83 +++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/.github/workflows/update-repo.yml b/.github/workflows/update-repo.yml index e69de29..ed892dd 100644 --- a/.github/workflows/update-repo.yml +++ b/.github/workflows/update-repo.yml @@ -0,0 +1,83 @@ +name: Update Arch Repository (Gitea) + +on: + push: + paths: + - 'x86_64/*.pkg.tar.zst' + workflow_dispatch: + +jobs: + build-and-deploy: + # Use 'host' so the runner can move files directly to your web directory + runs-on: host + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Ensure Tools and Directories + run: | + sudo apt-get update && sudo apt-get install -y libarchive-tools gpg + mkdir -p x86_64/db_temp + # Path where your packages will be served to the web + sudo mkdir -p /var/www/arch-repo/x86_64 + sudo chown -R $USER:$USER /var/www/arch-repo + + - name: Import GPG Key + run: | + echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import --yes + + - name: Build and Sign Repository + run: | + cd x86_64 + rm -f hyprarch-repo.db* hyprarch-repo.files* + + # 1. Export Public Key for users + gpg --export --armor 236328A7F2C2001E > pubkey.gpg + + # 2. Process Packages + for pkg in *.pkg.tar.zst; do + # Sign package + echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --batch --yes --pinentry-mode loopback --local-user 236328A7F2C2001E --passphrase-fd 0 --detach-sign --no-armor "$pkg" + + # Extract Metadata + pkgname=$(bsdtar -xOf "$pkg" .PKGINFO | grep "^pkgname =" | cut -d' ' -f3) + pkgver=$(bsdtar -xOf "$pkg" .PKGINFO | grep "^pkgver =" | cut -d' ' -f3) + pkgdesc=$(bsdtar -xOf "$pkg" .PKGINFO | grep "^pkgdesc =" | cut -d' ' -f3- | sed "s/['\"]//g") + + mkdir -p "db_temp/$pkgname-$pkgver" + { + echo "%NAME%"; echo "$pkgname"; echo "" + echo "%VERSION%"; echo "$pkgver"; echo "" + echo "%DESC%"; echo "$pkgdesc"; echo "" + echo "%FILENAME%"; echo "$pkg"; echo "" + echo "%CSIZE%"; echo "$(stat -c%s "$pkg")"; echo "" + echo "%ISIZE%"; echo "$(bsdtar -xOf "$pkg" .PKGINFO | grep "^size =" | cut -d' ' -f3)"; echo "" + echo "%PGPSIG%" + echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --batch --yes --pinentry-mode loopback --local-user 236328A7F2C2001E --passphrase-fd 0 --detach-sign --stdout --no-armor "$pkg" | base64 | tr -d '\n' + echo "" + } > "db_temp/$pkgname-$pkgver/desc" + done + + # 3. Create Database + cd db_temp + tar -c * | gzip -9 > ../hyprarch-repo.db.tar.gz + cd .. + echo "${{ secrets.GPG_PASSPHRASE }}" | gpg --batch --yes --pinentry-mode loopback --local-user 236328A7F2C2001E --passphrase-fd 0 --detach-sign --no-armor hyprarch-repo.db.tar.gz + + # 4. Finalize + cp hyprarch-repo.db.tar.gz hyprarch-repo.db + cp hyprarch-repo.db.tar.gz.sig hyprarch-repo.db.sig + cp hyprarch-repo.db.tar.gz hyprarch-repo.files + rm -rf db_temp + + - name: Generate Landing Page + run: | + # Use the same HTML logic as before, just change the URL to your domain + sed -i "s|https://hyprarch-repo.stuple.net|https://your-domain.com|g" index.html + # (Keep your previous landing page generation logic here) + + - name: Deploy to Local Web Folder + run: | + # Move everything to the live folder served by Cloudflare + cp -r * /var/www/arch-repo/ \ No newline at end of file