34 lines
1.5 KiB
Bash
Executable File
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)
|