diff --git a/build.sh b/build.sh index b80a04e..8026aa7 100755 --- a/build.sh +++ b/build.sh @@ -11,12 +11,11 @@ prepare_build() { # Create necessary directories if they don't exist mkdir -p dist mkdir -p build_logs - mkdir -p test_logs # Directory for test logs # Initialize go modules if go.mod does not exist if [ ! -f go.mod ]; then echo "Initializing Go modules" - go mod init ssh-timeout # Replace 'yourmodule' with your actual module name or path + go mod init yourmodule # Replace 'yourmodule' with your actual module name or path fi # Fetch and ensure all dependencies are up to date @@ -36,33 +35,30 @@ build_binary() { output_name="dist/${output_name}" - echo "Building for ${os}/${arch} -> ${output_name}" + # Dynamic Linking + echo "Building dynamically linked for ${os}/${arch} -> ${output_name}" GOOS=${os} GOARCH=${arch} go build -o ${output_name} main.go 2>build_logs/${os}_${arch}_build.log if [ $? -eq 0 ]; then echo "Successfully built ${output_name}" else echo "Failed to build ${output_name}. Check build_logs/${os}_${arch}_build.log for errors." fi -} -# Test function -run_tests() { - if ls *.go | grep '_test.go$' >/dev/null; then - echo "Running tests..." - go test ./... > test_logs/test_output.log 2>&1 + # Static Linking + if [[ "$os" == "linux" ]]; then # Typically, static linking is most relevant for Linux environments + static_output_name="${output_name}_static" + echo "Building statically linked for ${os}/${arch} -> ${static_output_name}" + CGO_ENABLED=0 GOOS=${os} GOARCH=${arch} go build -a -ldflags '-extldflags "-static"' -o ${static_output_name} main.go 2>build_logs/${os}_${arch}_static_build.log if [ $? -eq 0 ]; then - echo "Tests completed successfully." + echo "Successfully built ${static_output_name}" else - echo "Tests failed. Check test_logs/test_output.log for details." + echo "Failed to build ${static_output_name}. Check build_logs/${os}_${arch}_static_build.log for errors." fi - else - echo "No test files found, skipping tests." fi } # Main Build Process prepare_build -run_tests # Run tests optionally before the build for arch in "${ARCHITECTURES[@]}"; do IFS='/' read -r -a parts <<< "$arch" # Split architecture string os=${parts[0]} diff --git a/build_logs/linux_amd64_static_build.log b/build_logs/linux_amd64_static_build.log new file mode 100644 index 0000000..e69de29 diff --git a/build_logs/linux_arm64_static_build.log b/build_logs/linux_arm64_static_build.log new file mode 100644 index 0000000..e69de29 diff --git a/build_logs/linux_arm_static_build.log b/build_logs/linux_arm_static_build.log new file mode 100644 index 0000000..e69de29 diff --git a/dist/ssh-timeout_linux_arm64_static b/dist/ssh-timeout_linux_arm64_static new file mode 100755 index 0000000..f84cca6 Binary files /dev/null and b/dist/ssh-timeout_linux_arm64_static differ diff --git a/dist/ssh-timeout_linux_arm_static b/dist/ssh-timeout_linux_arm_static new file mode 100755 index 0000000..8ccf3d5 Binary files /dev/null and b/dist/ssh-timeout_linux_arm_static differ diff --git a/dist/ssh-timeout_static b/dist/ssh-timeout_static new file mode 100755 index 0000000..333be4f Binary files /dev/null and b/dist/ssh-timeout_static differ