#!/usr/bin/env bash set -x SOURCE_PATH=$1 BUILD_PATH=$2 COMPONENT_SLUG=$3 GO_RELEASE_PACKAGE_NAME=$4 PROJECT_VERSION=$5 PROJECT_BUILD_DATE=$6 platforms=$(go tool dist list) included_os=("linux" "windows") # define a list of excluded architectures included_arch=("amd64" "arm64") cd $SOURCE_PATH || exit 1 # Run and build loop through all platforms (except excluded ones) for platform in $platforms; do # GOOS und GOARCH Variablen setzen export GOOS=$(echo $platform | cut -d'/' -f1) export GOARCH=$(echo $platform | cut -d'/' -f2) if [[ ! "${included_os[@]}" =~ "$GOOS" ]]; then echo "Skipping excluded platform: $GOOS" continue fi if [[ ! "${included_arch[@]}" =~ "$GOARCH" ]]; then echo "Skipping excluded architecture: $GOARCH" continue fi echo "============================================" echo "Building for $GOOS/$GOARCH" output_name=$BUILD_PATH$COMPONENT_SLUG-$GOOS-$GOARCH if [ $GOOS = "windows" ]; then output_name+='.exe' fi env GOFLAGS= GOWORK=off GO111MODULE=on GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "-X $GO_RELEASE_PACKAGE_NAME.version=$PROJECT_VERSION -X $GO_RELEASE_PACKAGE_NAME.build=$PROJECT_BUILD_DATE" -o $output_name if [ $? -ne 0 ]; then echo "An error has occurred! $output_name build failed." echo "============================================" fi done cd - || exit 1