Add or update .codecov copy.yml
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
# build-release.sh - Build release binaries locally
|
||||
|
||||
set -e
|
||||
|
||||
VERSION=${1:-$(git describe --tags --always --dirty 2>/dev/null || echo "dev")}
|
||||
echo "Building release binaries for version: $VERSION"
|
||||
|
||||
# Clean previous builds
|
||||
rm -rf bin releases
|
||||
mkdir -p bin releases
|
||||
|
||||
# Platforms to build
|
||||
PLATFORMS=(
|
||||
"linux/amd64"
|
||||
"linux/arm64"
|
||||
"linux/arm"
|
||||
"windows/amd64"
|
||||
"windows/arm64"
|
||||
"darwin/amd64"
|
||||
"darwin/arm64"
|
||||
)
|
||||
|
||||
# Binaries to build
|
||||
BINARIES=(
|
||||
"onvif-cli"
|
||||
"onvif-quick"
|
||||
"onvif-server"
|
||||
"onvif-diagnostics"
|
||||
)
|
||||
|
||||
LDFLAGS="-s -w -X main.Version=${VERSION} -X main.Commit=$(git rev-parse --short HEAD 2>/dev/null || echo 'unknown')"
|
||||
|
||||
echo "Building binaries..."
|
||||
for platform in "${PLATFORMS[@]}"; do
|
||||
OS="${platform%/*}"
|
||||
ARCH="${platform#*/}"
|
||||
|
||||
echo ""
|
||||
echo "Building for $OS/$ARCH..."
|
||||
|
||||
for binary in "${BINARIES[@]}"; do
|
||||
OUTPUT="bin/${binary}-${OS}-${ARCH}"
|
||||
|
||||
if [ "$OS" = "windows" ]; then
|
||||
OUTPUT="${OUTPUT}.exe"
|
||||
fi
|
||||
|
||||
echo " - ${binary}"
|
||||
GOOS=$OS GOARCH=$ARCH CGO_ENABLED=0 go build -ldflags="${LDFLAGS}" -o "$OUTPUT" "./cmd/${binary}" 2>/dev/null || {
|
||||
echo " ⚠️ Skipped (build failed)"
|
||||
continue
|
||||
}
|
||||
done
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Creating release archives..."
|
||||
|
||||
cd bin
|
||||
|
||||
for platform in "${PLATFORMS[@]}"; do
|
||||
OS="${platform%/*}"
|
||||
ARCH="${platform#*/}"
|
||||
ARCHIVE_NAME="onvif-go-${VERSION}-${OS}-${ARCH}"
|
||||
|
||||
# Check if any binary exists for this platform
|
||||
if [ "$OS" = "windows" ]; then
|
||||
FILES=(*-${OS}-${ARCH}.exe)
|
||||
else
|
||||
FILES=(*-${OS}-${ARCH})
|
||||
fi
|
||||
|
||||
# Skip if no files found
|
||||
if [ "${FILES[0]}" = "*-${OS}-${ARCH}" ] || [ "${FILES[0]}" = "*-${OS}-${ARCH}.exe" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
echo " Creating archive for ${OS}/${ARCH}..."
|
||||
|
||||
if [ "$OS" = "windows" ]; then
|
||||
# ZIP for Windows
|
||||
zip -q "../releases/${ARCHIVE_NAME}.zip" *-${OS}-${ARCH}.exe ../README.md ../LICENSE
|
||||
else
|
||||
# tar.gz for Unix-like
|
||||
tar czf "../releases/${ARCHIVE_NAME}.tar.gz" *-${OS}-${ARCH} -C .. README.md LICENSE
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
|
||||
echo ""
|
||||
echo "Generating checksums..."
|
||||
cd releases
|
||||
if command -v sha256sum >/dev/null 2>&1; then
|
||||
sha256sum * > checksums.txt
|
||||
else
|
||||
shasum -a 256 * > checksums.txt
|
||||
fi
|
||||
cd ..
|
||||
|
||||
echo ""
|
||||
echo "✅ Build complete!"
|
||||
echo ""
|
||||
echo "Binaries in: $(pwd)/bin/"
|
||||
echo "Archives in: $(pwd)/releases/"
|
||||
echo ""
|
||||
ls -lh releases/
|
||||
|
||||
echo ""
|
||||
echo "To create a GitHub release, run:"
|
||||
echo " gh release create ${VERSION} releases/* --title \"Release ${VERSION}\" --notes \"Release notes here\""
|
||||
Reference in New Issue
Block a user