Files
browser-fingerprint/scripts/package-release.sh
T
Test User 5152086668
CI / Docker build (push) Has been cancelled
CI / Frontend test and build (push) Has been cancelled
CI / Rust test (push) Has been cancelled
Release / Build and publish release (push) Has been cancelled
Initial browser fingerprint app with Gitea CI
2026-07-04 03:15:26 +08:00

71 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
VERSION="${VERSION:-$(git -C "${ROOT_DIR}" describe --tags --always --dirty 2>/dev/null || echo dev)}"
RELEASE_DIR="${RELEASE_DIR:-${ROOT_DIR}/release}"
APP_NAME="browser-fingerprint"
PACKAGE_NAME="${APP_NAME}-${VERSION}"
PACKAGE_DIR="${RELEASE_DIR}/${PACKAGE_NAME}"
BUILD_DOCKER="${BUILD_DOCKER:-0}"
rm -rf "${RELEASE_DIR}"
mkdir -p "${PACKAGE_DIR}/frontend" "${PACKAGE_DIR}/backend"
cd "${ROOT_DIR}/frontend"
corepack enable
corepack prepare [email protected] --activate
pnpm install --frozen-lockfile
pnpm test
pnpm build
cd "${ROOT_DIR}/backend"
cargo fmt --check
cargo test --locked
cargo build --release --locked
cp "${ROOT_DIR}/backend/target/release/fingerprint_receiver" "${PACKAGE_DIR}/"
cp "${ROOT_DIR}/README.md" "${PACKAGE_DIR}/"
cp "${ROOT_DIR}/compose.yml" "${PACKAGE_DIR}/"
cp "${ROOT_DIR}/backend/schema.sql" "${PACKAGE_DIR}/backend/"
cp -R "${ROOT_DIR}/backend/data" "${PACKAGE_DIR}/backend/data"
cp -R "${ROOT_DIR}/frontend/dist" "${PACKAGE_DIR}/frontend/dist"
cat > "${PACKAGE_DIR}/RUNNING.md" <<EOF
# Running ${APP_NAME} ${VERSION}
## Binary
\`\`\`bash
DATABASE_URL=sqlite://fingerprints.db \\
ASSETS_DIR=frontend/dist \\
GEOIP_CITY_DB=backend/data/dbip-city-ipv4.mmdb \\
GEOIP_ASN_DB=backend/data/origin-asn.mmdb \\
./fingerprint_receiver
\`\`\`
## Docker Compose
\`\`\`bash
APP_PORT=8787 APP_DATA=\$PWD/data docker compose up -d
\`\`\`
EOF
tar -C "${RELEASE_DIR}" -czf "${RELEASE_DIR}/${PACKAGE_NAME}-runtime-linux-x86_64.tar.gz" "${PACKAGE_NAME}"
if git -C "${ROOT_DIR}" rev-parse --verify HEAD >/dev/null 2>&1; then
git -C "${ROOT_DIR}" archive \
--format=tar.gz \
--prefix="${PACKAGE_NAME}-source/" \
--output="${RELEASE_DIR}/${PACKAGE_NAME}-source.tar.gz" \
HEAD
fi
if [[ "${BUILD_DOCKER}" == "1" ]] && command -v docker >/dev/null 2>&1; then
docker build -f "${ROOT_DIR}/backend/Dockerfile" -t "${APP_NAME}:${VERSION}" "${ROOT_DIR}"
docker save "${APP_NAME}:${VERSION}" | gzip -c > "${RELEASE_DIR}/${PACKAGE_NAME}-docker-image.tar.gz"
fi
rm -rf "${PACKAGE_DIR}"
find "${RELEASE_DIR}" -maxdepth 1 -type f -print