Files
go-sip/deploys/build-package.sh
T

38 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
LOCK="$ROOT/deploys/versions.lock.json"
VERSION=${1:-$(awk -F'"' '/"version"[[:space:]]*:/ {print $4; exit}' "$LOCK")}
[[ "$VERSION" =~ ^[0-9A-Za-z][0-9A-Za-z.+_-]*$ ]] || { echo 'invalid version' >&2; exit 2; }
RELEASE_DIR="$ROOT/dist/release-$VERSION"
STAGE="$ROOT/dist/package-$VERSION"
ARCHIVE="$ROOT/deploys/packages/sip-go-agent-$VERSION-linux-amd64.tar.gz"
rm -rf -- "$RELEASE_DIR" "$STAGE" "$ARCHIVE" "$ARCHIVE.sha256"
RELEASE_VERSION="$VERSION" "$ROOT/scripts/build-release.sh" "$RELEASE_DIR"
mkdir -p "$STAGE" "$(dirname -- "$ARCHIVE")"
cp -a "$RELEASE_DIR/." "$STAGE/"
mkdir -p "$STAGE/systemd" "$STAGE/env" "$STAGE/config" "$STAGE/cell"
cp "$ROOT/deploys/install.sh" "$STAGE/install.sh"
cp "$ROOT/deploys/cell/nonprod-call-evidence.sh" "$STAGE/cell/nonprod-call-evidence.sh"
cp "$ROOT/deploys/systemd/"*.service "$STAGE/systemd/"
cp "$ROOT/deploys/env/"*.env.example "$STAGE/env/"
cp "$ROOT/deploys/config/agent-endpoints.example.json" "$STAGE/config/"
cp "$LOCK" "$STAGE/versions.lock.json"
chmod 0755 "$STAGE/install.sh" "$STAGE/cell/nonprod-call-evidence.sh"
chmod 0644 "$STAGE/systemd/"*.service "$STAGE/env/"*.env.example "$STAGE/config/agent-endpoints.example.json" "$STAGE/versions.lock.json"
(
cd "$STAGE"
find . -type f ! -name package.SHA256SUMS -printf '%P\n' | sort | while IFS= read -r file; do
sha256sum "$file"
done > package.SHA256SUMS
)
tar -C "$STAGE" -czf "$ARCHIVE" .
(
cd "$(dirname -- "$ARCHIVE")"
sha256sum "$(basename -- "$ARCHIVE")" > "$(basename -- "$ARCHIVE").sha256"
)
rm -rf -- "$STAGE"
printf 'package=%s\nchecksum=%s\n' "$ARCHIVE" "$ARCHIVE.sha256"