目录

Golang批量编译脚本

目录

可参考文章

适合linux、darwin、freebsd、windows平台与amd64、386、arm64架构的交叉构建

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash

project_name="xxxx"
release_version="v$(date +%Y.%m.%d.%H%M%S)"

release_dir=./release
rm -rf $release_dir/*
mkdir -p $release_dir

cd  $(dirname $0)

gofmt -w ./

for goos in "linux" "darwin" "freebsd" "windows"
do
    if [ "$goos" == "windows" ]; then
      obj_name=$project_name.exe
    else
      obj_name=$project_name
    fi
    
    echo "build $goos amd64"
    GOOS=$goos GOARCH=amd64 go build -o $obj_name *.go
    zip $release_dir/$project_name-$goos-amd64-$release_version.zip $obj_name config/application.yml.sample log

    echo "build $goos 386"
    GOOS=$goos GOARCH=386 go build -o $obj_name *.go
    zip $release_dir/$project_name-$goos-386-$release_version.zip $obj_name config/application.yml.sample log

    echo "build $goos arm64"
    GOOS=$goos GOARCH=arm64 go build -o $obj_name *.go
    zip $release_dir/$project_name-$goos-arm64-$release_version.zip $obj_name config/application.yml.sample log

    rm -f $obj_name
done

cd $release_dir
for file in ./*
do
    md5sum $file >> sha1sum.txt
done