Pulse/frontend-modern/scripts/build-release.sh
2025-10-11 23:29:47 +00:00

98 lines
2.9 KiB
Bash
Executable file

#!/bin/bash
set -e
# Get version from VERSION file
VERSION=$(cat VERSION)
# Colors
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}Building Pulse v${VERSION} release binaries${NC}"
# Create release directory
mkdir -p release
# Build frontend first
echo -e "${BLUE}Building frontend...${NC}"
cd frontend-modern
npm run build
cd ..
# Copy frontend to internal/api for embedding
echo -e "${BLUE}Copying frontend for embedding...${NC}"
rm -rf internal/api/frontend-modern
mkdir -p internal/api/frontend-modern
cp -r frontend-modern/dist internal/api/frontend-modern/
# Build for multiple architectures
echo -e "${BLUE}Building linux/amd64...${NC}"
GOOS=linux GOARCH=amd64 go build -o release/pulse-linux-amd64 ./cmd/pulse
echo -e "${BLUE}Building linux/arm64...${NC}"
GOOS=linux GOARCH=arm64 go build -o release/pulse-linux-arm64 ./cmd/pulse
echo -e "${BLUE}Building linux/arm (v7)...${NC}"
GOOS=linux GOARCH=arm GOARM=7 go build -o release/pulse-linux-armv7 ./cmd/pulse
# Create tarballs for each architecture
echo -e "${BLUE}Creating architecture-specific tarballs...${NC}"
# AMD64
cd release
mkdir -p temp-amd64
cp pulse-linux-amd64 temp-amd64/pulse
cp ../VERSION temp-amd64/VERSION
mkdir -p temp-amd64/frontend-modern
cp -r ../internal/api/frontend-modern/dist/* temp-amd64/frontend-modern/
tar -czf pulse-v${VERSION}-linux-amd64.tar.gz -C temp-amd64 .
rm -rf temp-amd64
# ARM64
mkdir -p temp-arm64
cp pulse-linux-arm64 temp-arm64/pulse
cp ../VERSION temp-arm64/VERSION
mkdir -p temp-arm64/frontend-modern
cp -r ../internal/api/frontend-modern/dist/* temp-arm64/frontend-modern/
tar -czf pulse-v${VERSION}-linux-arm64.tar.gz -C temp-arm64 .
rm -rf temp-arm64
# ARMv7
mkdir -p temp-armv7
cp pulse-linux-armv7 temp-armv7/pulse
cp ../VERSION temp-armv7/VERSION
mkdir -p temp-armv7/frontend-modern
cp -r ../internal/api/frontend-modern/dist/* temp-armv7/frontend-modern/
tar -czf pulse-v${VERSION}-linux-armv7.tar.gz -C temp-armv7 .
rm -rf temp-armv7
# Create universal tarball with all binaries
echo -e "${BLUE}Creating universal tarball...${NC}"
mkdir -p temp-universal
cp pulse-linux-amd64 temp-universal/
cp pulse-linux-arm64 temp-universal/
cp pulse-linux-armv7 temp-universal/
ln -sf pulse-linux-amd64 temp-universal/pulse
cp ../VERSION temp-universal/VERSION
mkdir -p temp-universal/frontend-modern
cp -r ../internal/api/frontend-modern/dist/* temp-universal/frontend-modern/
tar -czf pulse-v${VERSION}.tar.gz -C temp-universal .
rm -rf temp-universal
# Generate checksums
echo -e "${BLUE}Generating checksums...${NC}"
sha256sum pulse-v${VERSION}-linux-amd64.tar.gz > checksums.txt
sha256sum pulse-v${VERSION}-linux-arm64.tar.gz >> checksums.txt
sha256sum pulse-v${VERSION}-linux-armv7.tar.gz >> checksums.txt
sha256sum pulse-v${VERSION}.tar.gz >> checksums.txt
cd ..
echo -e "${GREEN}✓ Build complete!${NC}"
echo ""
echo "Release files:"
ls -lh release/
echo ""
echo "Checksums:"
cat release/checksums.txt