Go to file
徐晓伟 ff772cdbdc 📝 GitLab API 文档 2023-11-23 08:58:24 +08:00
api 🚧 发布项目:方法抽取 2023-11-22 21:49:27 +08:00
buildinfo 👷 打包时增加 git 树状态:clean、dirty 2023-11-22 11:00:55 +08:00
command 🚧 发布项目:文档 2023-11-22 20:23:41 +08:00
constant 🚧 发布项目:清理日志 2023-11-22 19:25:20 +08:00
docker 🔧 Dockerfile 2023-11-21 20:38:45 +08:00
flag 🚧 发布项目:清理日志 2023-11-22 19:25:20 +08:00
static 🎉 init project 2023-11-21 20:26:24 +08:00
.gitignore 🎉 init 2023-11-21 20:10:22 +08:00
.gitlab-ci.yml 👷 打包时增加 git 树状态:clean、dirty 2023-11-22 11:00:55 +08:00
LICENSE 📄 add LICENSE 2023-11-21 20:10:59 +08:00
README.md 📝 GitLab API 文档 2023-11-23 08:58:24 +08:00
gitmoji.md 🎉 init 2023-11-21 20:10:22 +08:00
go.mod 👷 打包时增加 git 树状态:clean、dirty 2023-11-22 11:00:55 +08:00
go.sum 👷 打包时增加 git 树状态:clean、dirty 2023-11-22 11:00:55 +08:00
main.go 🚧 发布项目:定义命令、参数 2023-11-22 13:41:46 +08:00
main_test.go 🎉 init project 2023-11-21 20:26:24 +08:00
sync.yml 👷 build 2023-11-21 20:36:01 +08:00

README.md

cicd-release

持续集成(CI)、持续交付(CD)、持续部署(CD) 发布 脚手架

License-Anti Link-996 QQ群

持续集成(CI)、持续交付(CD)、持续部署(CD) 发布 脚手架

为简化开发工作、提高生产率、解决常见问题而生

开发命令

get

go env -w GOPROXY=https://goproxy.cn,direct
# go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
go get -u github.com/urfave/cli/v2
go get -u github.com/xuxiaowei-com-cn/git-go@main
go get -u gopkg.in/yaml.v3

mod

go mod tidy
go mod download

run

go run main.go

run help

  • Windows 环境为 %xxx%
  • Linux 环境为 $xxx
go run main.go help
$ go run main.go --help
NAME:
   cicd-release - 持续集成(CI)、持续交付(CD)、持续部署(CD) 发布 脚手架

USAGE:
   cicd-release [global options] command [command options] [arguments...]

VERSION:
   dev

AUTHOR:
   徐晓伟 <xuxiaowei@xuxiaowei.com.cn>

COMMANDS:
   pre-release  预发布
   release      发布
   help, h      Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

COPYRIGHT:
   徐晓伟工作室 <xuxiaowei@xuxiaowei.com.cn>
  • 预发布
$ go run main.go pre-release --help
NAME:
   cicd-release pre-release - 预发布

USAGE:
   cicd-release pre-release command [command options] [arguments...]

COMMANDS:
   gitee    Gitee 预发布
   gitlab   GitLab 预发布,支持自定义实例(域名)
   github   GitHub 预发布
   help, h  Shows a list of commands or help for one command

OPTIONS:
   --release-name value                       发布名称
   --release-body value                       发布详情
   --tag value                                发布标签
   --auto-create-tag                          是否自动创建不存在的标签 (default: false)
   --milestones value [ --milestones value ]  发布里程碑
   --artifacts value [ --artifacts value ]    发布产物
   --gitee-repository value                   Gitee 仓库https://gitee.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为xuxiaowei-com-cn/cicd-release [%GITEE_REPO%]
   --gitee-token value                        Gitee Token
   --gitlab-instance value                    Gitlab 实例(协议 + 域名) (default: "https://gitlab.com") [%CI_SERVER_URL%]
   --gitlab-api value                         Gitlab API (default: "api/v4")
   --gitlab-repository value                  Gitlab 仓库https://gitlab.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为xuxiaowei-com-cn/cicd-release [%CI_PROJECT_PATH%]
   --gitlab-token value                       Gitlab Token
   --github-repository value                  Github 仓库https://github.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为xuxiaowei-com-cn/cicd-release [%GITHUB_REPOSITORY%]
   --github-token value                       Github Token [%GITHUB_TOKEN%]
   --help, -h                                 show help
  • 发布
$ go run main.go release --help
NAME:
   cicd-release release - 发布

USAGE:
   cicd-release release command [command options] [arguments...]

COMMANDS:
   gitee    Gitee 发布
   gitlab   GitLab 发布,支持自定义实例(域名)
   github   GitHub 发布
   help, h  Shows a list of commands or help for one command

OPTIONS:
   --release-name value                       发布名称
   --release-body value                       发布详情
   --tag value                                发布标签
   --auto-create-tag                          是否自动创建不存在的标签 (default: false)
   --milestones value [ --milestones value ]  发布里程碑
   --artifacts value [ --artifacts value ]    发布产物
   --gitee-repository value                   Gitee 仓库https://gitee.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为xuxiaowei-com-cn/cicd-release [%GITEE_REPO%]
   --gitee-token value                        Gitee Token
   --gitlab-instance value                    Gitlab 实例(协议 + 域名) (default: "https://gitlab.com") [%CI_SERVER_URL%]
   --gitlab-api value                         Gitlab API (default: "api/v4")
   --gitlab-repository value                  Gitlab 仓库https://gitlab.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为xuxiaowei-com-cn/cicd-release [%CI_PROJECT_PATH%]
   --gitlab-token value                       Gitlab Token
   --github-repository value                  Github 仓库https://github.com/xuxiaowei-com-cn/cicd-release.git 仓库应该为xuxiaowei-com-cn/cicd-release [%GITHUB_REPOSITORY%]
   --github-token value                       Github Token [%GITHUB_TOKEN%]
   --help, -h                                 show help

test

go test ./... -v

build

go build
# GOOS=设置构建的目标操作系统darwin | freebsd | linux | windows
# GOARCH=设置构建的目标操作系统386 | amd64 | arm | arm64
# -v打印编译过程中的详细信息
# -ldflags设置在编译时传递给链接器的参数
# -ldflags "-s -w -buildid="
#                           -s: 删除符号表信息,减小可执行文件的大小。
#                           -w: 删除调试信息,使可执行文件在运行时不会打印调试信息。
#                           -buildid=: 删除构建ID使可执行文件在运行时不会打印构建ID。
# -trimpath去掉所有包含 go path 的路径
# -o指定构建后输出的文件名
  • Windows

    • amd64
      go build -o buildinfo/buildinfo.exe buildinfo/buildinfo.go
      GOOS=windows GOARCH=amd64 go build -v -ldflags "-s -w -buildid= -X main.BuildDate=$(buildinfo/buildinfo.exe now) -X main.Compiler= -X main.GitCommitBranch=$(buildinfo/buildinfo.exe commitBranch) -X main.GitCommitSha=$(buildinfo/buildinfo.exe commitSha) -X main.GitCommitShortSha=$(buildinfo/buildinfo.exe commitShortSha) -X main.GitCommitTag=$(buildinfo/buildinfo.exe commitTag) -X main.GitCommitTimestamp=$(buildinfo/buildinfo.exe commitTimestamp) -X main.GitTreeState=$(buildinfo/buildinfo.exe git-tree-state) -X main.GitVersion=$(buildinfo/buildinfo.exe commitTag) -X main.GoVersion=$(buildinfo/buildinfo.exe goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform=windows/amd64 -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o cicd-release-windows-amd64.exe .
      
    • arm64
      go build -o buildinfo/buildinfo.exe buildinfo/buildinfo.go
      GOOS=windows GOARCH=arm64 go build -v -ldflags "-s -w -buildid= -X main.BuildDate=$(buildinfo/buildinfo.exe now) -X main.Compiler= -X main.GitCommitBranch=$(buildinfo/buildinfo.exe commitBranch) -X main.GitCommitSha=$(buildinfo/buildinfo.exe commitSha) -X main.GitCommitShortSha=$(buildinfo/buildinfo.exe commitShortSha) -X main.GitCommitTag=$(buildinfo/buildinfo.exe commitTag) -X main.GitCommitTimestamp=$(buildinfo/buildinfo.exe commitTimestamp) -X main.GitTreeState=$(buildinfo/buildinfo.exe git-tree-state) -X main.GitVersion=$(buildinfo/buildinfo.exe commitTag) -X main.GoVersion=$(buildinfo/buildinfo.exe goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform=windows/arm64 -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o cicd-release-windows-arm64.exe .
      
  • Linux

    • amd64
      go build -o buildinfo/buildinfo buildinfo/buildinfo.go
      GOOS=linux GOARCH=amd64 go build -v -ldflags "-s -w -buildid= -X main.BuildDate=$(buildinfo/buildinfo now) -X main.Compiler= -X main.GitCommitBranch=$(buildinfo/buildinfo commitBranch) -X main.GitCommitSha=$(buildinfo/buildinfo commitSha) -X main.GitCommitShortSha=$(buildinfo/buildinfo commitShortSha) -X main.GitCommitTag=$(buildinfo/buildinfo commitTag) -X main.GitCommitTimestamp=$(buildinfo/buildinfo commitTimestamp) -X main.GitTreeState=$(buildinfo/buildinfo git-tree-state) -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform=linux/amd64 -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o cicd-release-linux-amd64 .
      
    • arm64
      go build -o buildinfo/buildinfo buildinfo/buildinfo.go
      GOOS=linux GOARCH=arm64 go build -v -ldflags "-s -w -buildid= -X main.BuildDate=$(buildinfo/buildinfo now) -X main.Compiler= -X main.GitCommitBranch=$(buildinfo/buildinfo commitBranch) -X main.GitCommitSha=$(buildinfo/buildinfo commitSha) -X main.GitCommitShortSha=$(buildinfo/buildinfo commitShortSha) -X main.GitCommitTag=$(buildinfo/buildinfo commitTag) -X main.GitCommitTimestamp=$(buildinfo/buildinfo commitTimestamp) -X main.GitTreeState=$(buildinfo/buildinfo git-tree-state) -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform=linux/arm64 -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o cicd-release-linux-arm64 .
      
  • Darwin

    • amd64
      go build -o buildinfo/buildinfo buildinfo/buildinfo.go
      GOOS=darwin GOARCH=amd64 go build -v -ldflags "-s -w -buildid= -X main.BuildDate=$(buildinfo/buildinfo now) -X main.Compiler= -X main.GitCommitBranch=$(buildinfo/buildinfo commitBranch) -X main.GitCommitSha=$(buildinfo/buildinfo commitSha) -X main.GitCommitShortSha=$(buildinfo/buildinfo commitShortSha) -X main.GitCommitTag=$(buildinfo/buildinfo commitTag) -X main.GitCommitTimestamp=$(buildinfo/buildinfo commitTimestamp) -X main.GitTreeState=$(buildinfo/buildinfo git-tree-state) -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform=darwin/amd64 -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o cicd-release-darwin-amd64 .
      
    • arm64
      go build -o buildinfo/buildinfo buildinfo/buildinfo.go
      GOOS=darwin GOARCH=arm64 go build -v -ldflags "-s -w -buildid= -X main.BuildDate=$(buildinfo/buildinfo now) -X main.Compiler= -X main.GitCommitBranch=$(buildinfo/buildinfo commitBranch) -X main.GitCommitSha=$(buildinfo/buildinfo commitSha) -X main.GitCommitShortSha=$(buildinfo/buildinfo commitShortSha) -X main.GitCommitTag=$(buildinfo/buildinfo commitTag) -X main.GitCommitTimestamp=$(buildinfo/buildinfo commitTimestamp) -X main.GitTreeState=$(buildinfo/buildinfo git-tree-state) -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform=darwin/arm64 -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o cicd-release-darwin-arm64 .
      

文档