- Добавлен файл LICENSE с лицензией GNU General Public License версии 3.0. - Создан скрипт PowerShell (build-all.ps1) для сборки двоичных файлов Windows и Linux из Windows с использованием кросс-компиляции. - Разработан скрипт сборки Linux (build-linux.sh) для сборки двоичных файлов Linux. - Реализован скрипт PowerShell (build-windows.ps1) для сборки двоичных файлов Windows. - Каждый скрипт сборки включает упаковку и генерацию контрольной суммы SHA256 для двоичных файлов.
77 lines
2.5 KiB
Bash
77 lines
2.5 KiB
Bash
#!/bin/bash
|
|
# Bash script for building Linux binaries
|
|
# Usage: ./scripts/build-linux.sh
|
|
|
|
set -e # Exit on error
|
|
|
|
# Read version from VERSION file
|
|
VERSION=$(cat VERSION | tr -d '[:space:]')
|
|
|
|
BINARY="compress"
|
|
OUTPUT_DIR="dist"
|
|
|
|
echo "Building compress $VERSION for Linux..."
|
|
|
|
# Create output directory if it doesn't exist
|
|
mkdir -p "$OUTPUT_DIR"
|
|
|
|
# Build for Linux amd64
|
|
echo ""
|
|
echo "Building Linux amd64..."
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o "$OUTPUT_DIR/${BINARY}-linux-amd64" ./cmd
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to build Linux amd64"
|
|
exit 1
|
|
fi
|
|
chmod +x "$OUTPUT_DIR/${BINARY}-linux-amd64"
|
|
|
|
# Build for Linux arm64
|
|
echo "Building Linux arm64..."
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o "$OUTPUT_DIR/${BINARY}-linux-arm64" ./cmd
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to build Linux arm64"
|
|
exit 1
|
|
fi
|
|
chmod +x "$OUTPUT_DIR/${BINARY}-linux-arm64"
|
|
|
|
echo ""
|
|
echo "Packaging Linux releases..."
|
|
|
|
# Package Linux amd64
|
|
echo "Packaging Linux amd64..."
|
|
TEMP_DIR="$OUTPUT_DIR/temp-linux-amd64"
|
|
mkdir -p "$TEMP_DIR"
|
|
cp "$OUTPUT_DIR/${BINARY}-linux-amd64" "$TEMP_DIR/${BINARY}"
|
|
[ -f "LICENSE" ] && cp "LICENSE" "$TEMP_DIR/"
|
|
[ -f "README.md" ] && cp "README.md" "$TEMP_DIR/"
|
|
[ -f "config.yaml.example" ] && cp "config.yaml.example" "$TEMP_DIR/"
|
|
tar -czf "$OUTPUT_DIR/${BINARY}-${VERSION}-linux-amd64.tar.gz" -C "$TEMP_DIR" .
|
|
rm -rf "$TEMP_DIR"
|
|
|
|
# Package Linux arm64
|
|
echo "Packaging Linux arm64..."
|
|
TEMP_DIR="$OUTPUT_DIR/temp-linux-arm64"
|
|
mkdir -p "$TEMP_DIR"
|
|
cp "$OUTPUT_DIR/${BINARY}-linux-arm64" "$TEMP_DIR/${BINARY}"
|
|
[ -f "LICENSE" ] && cp "LICENSE" "$TEMP_DIR/"
|
|
[ -f "README.md" ] && cp "README.md" "$TEMP_DIR/"
|
|
[ -f "config.yaml.example" ] && cp "config.yaml.example" "$TEMP_DIR/"
|
|
tar -czf "$OUTPUT_DIR/${BINARY}-${VERSION}-linux-arm64.tar.gz" -C "$TEMP_DIR" .
|
|
rm -rf "$TEMP_DIR"
|
|
|
|
echo ""
|
|
echo "Generating SHA256 checksums..."
|
|
|
|
# Generate SHA256 checksums
|
|
sha256sum "$OUTPUT_DIR/${BINARY}-${VERSION}-linux-amd64.tar.gz" | awk '{print $1}' > "$OUTPUT_DIR/${BINARY}-${VERSION}-linux-amd64.tar.gz.sha256"
|
|
sha256sum "$OUTPUT_DIR/${BINARY}-${VERSION}-linux-arm64.tar.gz" | awk '{print $1}' > "$OUTPUT_DIR/${BINARY}-${VERSION}-linux-arm64.tar.gz.sha256"
|
|
|
|
echo ""
|
|
echo "Build complete! Artifacts:"
|
|
echo " - $OUTPUT_DIR/${BINARY}-${VERSION}-linux-amd64.tar.gz"
|
|
echo " - $OUTPUT_DIR/${BINARY}-${VERSION}-linux-amd64.tar.gz.sha256"
|
|
echo " - $OUTPUT_DIR/${BINARY}-${VERSION}-linux-arm64.tar.gz"
|
|
echo " - $OUTPUT_DIR/${BINARY}-${VERSION}-linux-arm64.tar.gz.sha256"
|
|
echo ""
|
|
echo "Done!"
|