Files

34 lines
1.5 KiB
Bash
Executable File

#!/bin/sh
set -eu
project_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
cd "$project_root"
build_mode=${1:-build}
case "$build_mode" in build|release|web) ;; *) echo 'Usage: scripts/build.sh [build|release|web] [all|amd64|arm64]' >&2; exit 2;; esac
release_target=${2:-all}
case "$release_target" in all) release_arches='amd64 arm64' ;; amd64|arm64) release_arches=$release_target ;; *) echo 'Release architecture must be all, amd64 or arm64' >&2; exit 2 ;; esac
npm --prefix web ci
npm --prefix web run build
touch internal/web/dist/.gitkeep
if [ "$build_mode" = web ]; then exit 0; fi
node scripts/notices.mjs
mkdir -p build
if [ "$build_mode" = build ]; then
CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' -o build/bluebird ./cmd/bluebird
exit 0
fi
for build_arch in $release_arches; do
build_dir="build/linux-$build_arch"
rm -rf -- "$build_dir"
mkdir -p "$build_dir"
CGO_ENABLED=0 GOOS=linux GOARCH="$build_arch" go build -trimpath -ldflags='-s -w' -o "$build_dir/bluebird" ./cmd/bluebird
cp deploy/config.example.toml "$build_dir/config.toml"
cp deploy/install.sh "$build_dir/install.sh"
cp deploy/upgrade.sh "$build_dir/upgrade.sh"
printf '%s\n' "$build_arch" > "$build_dir/ARCH"
cp -R deploy docs "$build_dir/"
cp README.md THIRD_PARTY_NOTICES.txt "$build_dir/"
tar -czf "build/bluebird-linux-$build_arch.tar.gz" -C "$build_dir" .
done
if [ "$release_target" != arm64 ]; then cp build/linux-amd64/bluebird build/bluebird; fi
(cd build && sha256sum bluebird-linux-*.tar.gz > SHA256SUMS)