Files
.idea
amd64
arm64
.gitignore
build.sh
2025-05-04 20:03:30 +02:00

100 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
set -e # Exit on error
# Set Variables
VERSION=$(curl -s https://dl.gitea.com/gitea/version.json | jq -r '.latest.version')
echo "Current version: ${VERSION}"
# Check if this version is already built
if [[ -f "../gitea-deb/gitea_${VERSION}_amd64.deb" ]] && [[ -f "../gitea-deb/gitea_${VERSION}_arm64.deb" ]]; then
echo "✅ Version ${VERSION} already built and present in release repo. Aborting."
exit 0
fi
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}"
if [[ ! -d "dist/${ARCH}" ]]; then
echo "Creating directory dist/${ARCH}"
mkdir "dist/${ARCH}"
fi
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 binary to the target
for ARCH in "${ARCHS[@]}"; do
if [[ ! -d "${ARCH}/opt/gitea/bin" ]]; then
echo "Creating directory ${ARCH}/opt/gitea/bin"
mkdir -p "${ARCH}/opt/gitea/bin"
fi
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}"
sed -i "s/^Version: .*/Version: ${VERSION}/" "${ARCH}/DEBIAN/control"
dpkg-deb --build "${ARCH}" "gitea_${VERSION}_${ARCH}.deb"
done
echo "All packages built successfully:"
ls -lh gitea_${VERSION}_*.deb
echo "Moving .deb packages to release repo …"
mv gitea_${VERSION}_*.deb ../gitea-deb/
(
cd ../gitea-deb
echo "Updating APT package index …"
dpkg-scanpackages --multiversion . override > Packages
dpkg-scanpackages --multiversion . override | gzip -9c > Packages.gz
echo "Generating Release file …"
apt-ftparchive -c=apt-release.conf release . > Release
git add --all .
if ! git diff --cached --quiet; then
echo "Committing and pushing release …"
git commit -m "Release Gitea ${VERSION}"
git push
else
echo "No changes to commit."
fi
)