README.md 9.8 KB
Newer Older
徐晓伟's avatar
:memo:  
徐晓伟 已提交
1
# GitLab Go 脚手架
2 3 4 5 6 7

## 开发命令

### get

```shell
8 9
go env -w GOPROXY=https://goproxy.cn,direct
# go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
10
go get -u github.com/urfave/cli/v2
徐晓伟's avatar
徐晓伟 已提交
11
go get -u github.com/xanzy/go-gitlab
12 13
go get -u github.com/xuxiaowei-com-cn/git-go@main
go get -u gopkg.in/yaml.v3
14 15 16 17 18 19 20 21
```

### mod

```shell
go mod tidy
```

徐晓伟's avatar
徐晓伟 已提交
22 23 24 25
```shell
go mod download
```

26 27 28 29 30 31 32 33
### run

```shell
go run main.go
```

### run help

徐晓伟's avatar
徐晓伟 已提交
34 35 36 37
```shell
go run main.go help
```

38
```shell
徐晓伟's avatar
:memo:  
徐晓伟 已提交
39
$ go run main.go --help
40
NAME:
徐晓伟's avatar
:memo:  
徐晓伟 已提交
41
   gitlab-go - 基于 Go 语言开发的 GitLab 命令行工具
42 43

USAGE:
徐晓伟's avatar
:memo:  
徐晓伟 已提交
44
   gitlab-go [global options] command [command options] [arguments...]
45

徐晓伟's avatar
徐晓伟 已提交
46
VERSION:
徐晓伟's avatar
:memo:  
徐晓伟 已提交
47
   dev
徐晓伟's avatar
徐晓伟 已提交
48

49
COMMANDS:
徐晓伟's avatar
:memo:  
徐晓伟 已提交
50 51 52 53 54
   projects, p        项目 API,中文文档:https://docs.gitlab.cn/jh/api/projects.html
   pipelines, pl      流水线 API,中文文档:https://docs.gitlab.cn/jh/api/pipelines.html
   jobs, j            作业 API,中文文档:https://docs.gitlab.cn/jh/api/jobs.html
   job-artifacts, ja  作业产物 API,中文文档:https://docs.gitlab.cn/jh/api/job_artifacts.html
   help, h            Shows a list of commands or help for one command
55 56

GLOBAL OPTIONS:
徐晓伟's avatar
徐晓伟 已提交
57 58
   --help, -h     show help
   --version, -v  print the version
59 60
```

徐晓伟's avatar
:memo:  
徐晓伟 已提交
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
- [projects - 项目 API](https://docs.gitlab.cn/jh/api/projects.html)

```shell
$ go run main.go projects --help
NAME:
   gitlab-go projects - 项目 API,中文文档:https://docs.gitlab.cn/jh/api/projects.html

USAGE:
   gitlab-go projects command [command options] [arguments...]

COMMANDS:
   list     列出所有项目
   help, h  Shows a list of commands or help for one command

OPTIONS:
   --base-url value  实例地址,例如:https://gitlab.xuxiaowei.com.cn/api/v4 (default: "https://gitlab.com/api/v4") [%CI_API_V4_URL%]
   --token value     your_access_token
   --sort value      按照 asc 或者 desc 排序 (default: "desc")
   --help, -h        show help
```

- [pipelines - 流水线 API](https://docs.gitlab.cn/jh/api/pipelines.html)

```shell
$ go run main.go pipelines --help
NAME:
   gitlab-go pipelines - 流水线 API,中文文档:https://docs.gitlab.cn/jh/api/pipelines.html

USAGE:
   gitlab-go pipelines command [command options] [arguments...]

COMMANDS:
   list     列出项目流水线
   help, h  Shows a list of commands or help for one command

OPTIONS:
   --base-url value  实例地址,例如:https://gitlab.xuxiaowei.com.cn/api/v4 (default: "https://gitlab.com/api/v4") [%CI_API_V4_URL%]
   --token value     your_access_token
   --sort value      按照 asc 或者 desc 排序 (default: "desc")
   --id value        项目 ID 或 URL 编码的路径
   --help, -h        show help
```

- [jobs - 作业 API](https://docs.gitlab.cn/jh/api/jobs.html)

```shell
$ go run main.go jobs --help
NAME:
   gitlab-go jobs - 作业 API,中文文档:https://docs.gitlab.cn/jh/api/jobs.html

USAGE:
   gitlab-go jobs command [command options] [arguments...]

COMMANDS:
   list     列出项目作业
   help, h  Shows a list of commands or help for one command

OPTIONS:
   --base-url value  实例地址,例如:https://gitlab.xuxiaowei.com.cn/api/v4 (default: "https://gitlab.com/api/v4") [%CI_API_V4_URL%]
   --token value     your_access_token
   --sort value      按照 asc 或者 desc 排序 (default: "desc")
   --help, -h        show help
```

- [job-artifacts - 作业产物 API](https://docs.gitlab.cn/jh/api/job_artifacts.html)

```shell
$ go run main.go job-artifacts --help
NAME:
   gitlab-go job-artifacts - 作业产物 API,中文文档:https://docs.gitlab.cn/jh/api/job_artifacts.html

USAGE:
   gitlab-go job-artifacts command [command options] [arguments...]

COMMANDS:
   get                   获取作业产物(未完成)
   download, dl          下载产物归档文件(未完成)
   delete, rm            删除作业产物
   delete-project, rm-p  删除项目产物
   help, h               Shows a list of commands or help for one command

OPTIONS:
   --base-url value  实例地址,例如:https://gitlab.xuxiaowei.com.cn/api/v4 (default: "https://gitlab.com/api/v4") [%CI_API_V4_URL%]
   --token value     your_access_token
   --id value        项目 ID 或 URL 编码的路径
   --job-id value    作业 ID
   --help, -h        show help
```

150 151 152
### test

```shell
徐晓伟's avatar
:memo:  
徐晓伟 已提交
153
go test ./... -v
154 155 156 157 158
```

### build

```shell
徐晓伟's avatar
徐晓伟 已提交
159 160 161 162 163
go build
# GOOS=:设置构建的目标操作系统(darwin | freebsd | linux | windows)
# GOARCH=:设置构建的目标操作系统(386 | amd64 | arm | arm64)
# -v:打印编译过程中的详细信息
# -ldflags:设置在编译时传递给链接器的参数
徐晓伟's avatar
徐晓伟 已提交
164 165 166 167
# -ldflags "-s -w -buildid="
#                           -s: 删除符号表信息,减小可执行文件的大小。
#                           -w: 删除调试信息,使可执行文件在运行时不会打印调试信息。
#                           -buildid=: 删除构建ID,使可执行文件在运行时不会打印构建ID。
徐晓伟's avatar
徐晓伟 已提交
168 169
# -trimpath:去掉所有包含 go path 的路径
# -o:指定构建后输出的文件名
170
```
徐晓伟's avatar
徐晓伟 已提交
171 172 173 174

- Windows
    - amd64
        ```shell
175
        go build -o buildinfo/buildinfo.exe buildinfo/buildinfo.go
176
        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= -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= -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o gitlab-go-windows-amd64.exe .
徐晓伟's avatar
徐晓伟 已提交
177 178 179
        ```
    - arm64
        ```shell
180
        go build -o buildinfo/buildinfo.exe buildinfo/buildinfo.go
181
        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= -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= -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o gitlab-go-windows-arm64.exe .
徐晓伟's avatar
徐晓伟 已提交
182 183 184 185 186
        ```

- Linux
    - amd64
        ```shell
187
        go build -o buildinfo/buildinfo buildinfo/buildinfo.go
188
        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= -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform= -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o gitlab-go-linux-amd64 .
徐晓伟's avatar
徐晓伟 已提交
189 190 191
        ```
    - arm64
        ```shell
192
        go build -o buildinfo/buildinfo buildinfo/buildinfo.go
193
        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= -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform= -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o gitlab-go-linux-arm64 .
徐晓伟's avatar
徐晓伟 已提交
194 195 196 197 198
        ```

- Darwin
    - amd64
        ```shell
199
        go build -o buildinfo/buildinfo buildinfo/buildinfo.go
200
        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= -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform= -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o gitlab-go-darwin-amd64 .
徐晓伟's avatar
徐晓伟 已提交
201 202 203
        ```
    - arm64
        ```shell
204
        go build -o buildinfo/buildinfo buildinfo/buildinfo.go
205
        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= -X main.GitVersion=$(buildinfo/buildinfo commitTag) -X main.GoVersion=$(buildinfo/buildinfo goShortVersion) -X main.Major= -X main.Minor= -X main.Revision= -X main.Platform= -X main.CiPipelineId= -X main.CiJobId=" -trimpath -o gitlab-go-darwin-arm64 .
徐晓伟's avatar
徐晓伟 已提交
206
        ```