diff --git a/.gitignore b/.gitignore index c7bd2e1..7f1c84a 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,6 @@ build/ .vscode/ /*.exe +/gitlab-go-windows-* +/gitlab-go-linux-* +/gitlab-go-darwin-* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 507fd76..3902dce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,43 @@ stages: + - build - sync +build:golang:1.21: + stage: build + image: golang:1.21 + script: + - go version + - go env -w GOPROXY=https://goproxy.cn,direct + - GOOS=windows GOARCH=amd64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-windows-amd64.exe . + - GOOS=windows GOARCH=arm64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-windows-arm64.exe . + - GOOS=linux GOARCH=amd64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-linux-amd64 . + - GOOS=linux GOARCH=arm64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-linux-arm64 . + - GOOS=darwin GOARCH=amd64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-darwin-amd64 . + - GOOS=darwin GOARCH=arm64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-darwin-arm64 . + - ./gitlab-go-linux-amd64 --version + - ./gitlab-go-linux-amd64 + artifacts: + name: "${CI_JOB_NAME}" + expire_in: 1 week + paths: + - gitlab-go-linux-* + +build:golang:1.21-alpine3.18: + stage: build + image: golang:1.21-alpine3.18 + script: + - go version + - go env -w GOPROXY=https://goproxy.cn,direct + - GOOS=linux GOARCH=amd64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-linux-alpine-amd64 . + - GOOS=linux GOARCH=arm64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-linux-alpine-arm64 . + - ./gitlab-go-linux-alpine-amd64 --version + - ./gitlab-go-linux-alpine-amd64 + artifacts: + name: "${CI_JOB_NAME}" + expire_in: 1 week + paths: + - gitlab-go-linux-* + # 嵌入 include: # 同步代码 diff --git a/README.md b/README.md index 5adc570..293bc25 100644 --- a/README.md +++ b/README.md @@ -46,5 +46,41 @@ go test -v ### build ```shell -go build main.go +go build +# GOOS=:设置构建的目标操作系统(darwin | freebsd | linux | windows) +# GOARCH=:设置构建的目标操作系统(386 | amd64 | arm | arm64) +# -v:打印编译过程中的详细信息 +# -ldflags:设置在编译时传递给链接器的参数 +# -trimpath:去掉所有包含 go path 的路径 +# -o:指定构建后输出的文件名 ``` + +- Windows + - amd64 + ```shell + GOOS=windows GOARCH=amd64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-windows-amd64.exe . + ``` + - arm64 + ```shell + GOOS=windows GOARCH=arm64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-windows-arm64.exe . + ``` + +- Linux + - amd64 + ```shell + GOOS=linux GOARCH=amd64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-linux-amd64 . + ``` + - arm64 + ```shell + GOOS=linux GOARCH=arm64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-linux-arm64 . + ``` + +- Darwin + - amd64 + ```shell + GOOS=darwin GOARCH=amd64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-darwin-amd64 . + ``` + - arm64 + ```shell + GOOS=darwin GOARCH=arm64 go build -v -ldflags "-s -w -buildid=" -trimpath -o gitlab-go-darwin-arm64 . + ```