c2d6aabea0
- Update Makefile with test-coverage and verify targets - Add build.sh script for cross-platform builds with SHA256 checksums - Implement integration tests for full workflow (add/list/get/update/export/delete) - Add config integration test - Update project state documentation
49 lines
1.2 KiB
Bash
Executable File
49 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build script for multiple platforms
|
|
set -e
|
|
|
|
VERSION=${VERSION:-$(git describe --tags --always --dirty 2>/dev/null || echo "dev")}
|
|
BUILD_DIR=${BUILD_DIR:-"build"}
|
|
BINARY_NAME="hostkeeper"
|
|
|
|
echo "Building Hostkeeper v${VERSION}"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
rm -rf ${BUILD_DIR}
|
|
mkdir -p ${BUILD_DIR}
|
|
|
|
platforms=(
|
|
"linux/amd64"
|
|
"linux/arm64"
|
|
"linux/arm"
|
|
"darwin/amd64"
|
|
"darwin/arm64"
|
|
"windows/amd64"
|
|
)
|
|
|
|
for platform in "${platforms[@]}"; do
|
|
IFS='/' read -r os arch <<< "$platform"
|
|
|
|
output_name="${BINARY_NAME}-${os}-${arch}"
|
|
if [ "$os" = "windows" ]; then
|
|
output_name="${output_name}.exe"
|
|
fi
|
|
|
|
echo " Building for ${os}/${arch}..."
|
|
|
|
GOOS=$os GOARCH=$arch go build \
|
|
-ldflags "-X main.version=${VERSION} -X main.buildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
-o "${BUILD_DIR}/${output_name}" \
|
|
./cmd/hostkeeper
|
|
|
|
if command -v shasum &> /dev/null; then
|
|
(cd ${BUILD_DIR} && shasum -a 256 "${output_name}" > "${output_name}.sha256")
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "Build complete! Binaries in ${BUILD_DIR}/"
|
|
echo ""
|
|
echo "Available binaries:"
|
|
ls -lh ${BUILD_DIR}/
|