core/go-build.sh
Rama dev · réplica de lectura del repositorio original.
# !/bin/sh
# How to use:
# cd /opt/BillionMail
# docker run -d --name p-g-alpine --hostname p-g-alpine --restart=always -v ./core:/opt/core -v ./Dockerfiles/core/repositories:/etc/apk/repositories alpine:3.20 tail -f /dev/null
# docker exec -it p-g-alpine sh
# cd /opt/core
# sh go-build.sh
set -e # Exit immediately when encountering an error
PLATFORMS=${1:-"all"}
if [[ "$PLATFORMS" != "all" && "$PLATFORMS" != "x86" && "$PLATFORMS" != "arm" ]]; then
echo -e "Packaging architecture parameters are incorrect, please enter all, x86, arm"
echo -e "Example: sh go-build.sh all"
exit 1
fi
# Check and install Go (if not exist or version is lower than 1.22)
if ! command -v go &>/dev/null; then
echo "Error: Go is not installed, it is being installed automatically..."
apk update && apk add go file
elif [ "$(go version | awk '{print $3}' | sed 's/go//')" \< "1.22" ]; then
echo "Error: Go version is lower than 1.22, please upgrade manually."
exit 1
fi
# Check and install the file (if not exists)
if ! command -v file &>/dev/null; then
echo "Warning: file not installed, it is being installed automatically..."
apk update && apk add file
fi
# Verify installation results
echo "Current environment:"
echo "- Go version: $(go version 2>/dev/null || echo 'Not installed')"
echo "- file version: $(file --version 2>/dev/null || echo 'Not installed')"
#go env -w GOPROXY=https://goproxy.io,direct
if [ ! -d "/opt/core" ]; then
echo "/opt/core not found"
exit 1
fi
cd /opt/core
if [ ! -f "main.go" ]; then
echo "main.go not found"
exit 1
fi
go mod tidy
if [[ "$PLATFORMS" == "all" || "$PLATFORMS" == "x86" ]]; then
# amd64
echo "build start amd64"
rm -f billionmail-amd64
export GOOS=linux
export GOARCH=amd64
go build -ldflags="-s -w" -o billionmail-amd64 main.go
if [ ! -f "billionmail-amd64" ]; then
echo "build amd64 failed"
exit 1
fi
check_file=$(file billionmail-amd64 | grep "x86-64,")
if [ -z "${check_file}" ];then
echo "billionmail-amd64 is not an arm64 file, package failed.";
exit 0;
fi
fi
if [[ "$PLATFORMS" == "all" || "$PLATFORMS" == "arm" ]]; then
# arm64
echo "build start arm64"
rm -f billionmail-arm64
export GOOS=linux
export GOARCH=arm64
go build -ldflags="-s -w" -o billionmail-arm64 main.go
if [ ! -f "billionmail-arm64" ]; then
echo "build arm64 failed"
exit 1
fi
check_file=$(file billionmail-arm64 | grep -E "ARM|aarch64")
if [ -z "${check_file}" ];then
echo "billionmail-arm64 is not an arm64 file, package failed.";
exit 0;
fi
fi
ls -al billionmail-*