#!/bin/bash set -e # Exit on error # Set Variables VERSION=$(curl -s https://dl.gitea.com/gitea/version.json | jq -r '.latest.version') ARCHS=("amd64" "arm64") GITEA_BASE_URL="https://dl.gitea.com/gitea/${VERSION}" FILES=("xz" "xz.asc" "xz.sha256" "xz.sha256.asc") # Download Gitea Binaries and Signatures for ARCH in "${ARCHS[@]}"; do echo "Downloading Gitea ${VERSION} for ${ARCH}..." for FILE in "${FILES[@]}"; do FILE_NAME="gitea-${VERSION}-linux-${ARCH}.${FILE}" FILE_URL="${GITEA_BASE_URL}/${FILE_NAME}" TARGET_FILE="dist/${ARCH}/${FILE_NAME}" if [[ -f "$TARGET_FILE" ]]; then echo "✅ File already exists: $TARGET_FILE (Skipping)" else echo "⬇️ Downloading: $FILE_URL" wget -q "$FILE_URL" -O "$TARGET_FILE" fi done done # Verify GPG Signatures for ARCH in "${ARCHS[@]}"; do echo "Verifying GPG signature for ${ARCH}..." gpg --verify "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz.asc" "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz" gpg --verify "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz.sha256.asc" "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz.sha256" done # Verify Checksums for ARCH in "${ARCHS[@]}"; do echo "Verifying SHA256 checksum for ${ARCH}..." (cd "dist/${ARCH}" && sha256sum -c gitea-${VERSION}-linux-${ARCH}.xz.sha256) done # expand the Gitea binray to the target for ARCH in "${ARCHS[@]}"; do xz -dc "dist/${ARCH}/gitea-${VERSION}-linux-${ARCH}.xz" > "${ARCH}/opt/gitea/bin/gitea" || { echo "❌ Extraction failed for ${ARCH}"; exit 1; } # Verify the extracted file isn't empty if [[ ! -s "${ARCH}/opt/gitea/bin/gitea" ]]; then echo "❌ Extracted file is empty for ${ARCH}. Something went wrong!" exit 1 fi chmod +x "${ARCH}/opt/gitea/bin/gitea" done # Build Debian Packages for ARCH in "${ARCHS[@]}"; do echo "Building package for ${ARCH}..." dpkg-deb --build "${ARCH}" "gitea_${VERSION}_${ARCH}.deb" done echo "All packages built successfully:" ls -lh gitea_${VERSION}_*.deb