go env -w GOPROXY=https://goproxy.cn,direct
# go env -w GOPROXY=https://proxy.golang.org,direct
# go env -w GOPROXY=https://goproxy.io,direct
# go env -w GOPROXY=https://mirrors.aliyun.com/goproxy,direct
# go env -w GOPROXY=https://mirrors.cloud.tencent.com/go,direct
go get -u github.com/urfave/cli/v2
go get -u github.com/xanzy/go-gitlab
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:
gitlab-go - 基于 Go 语言开发的 GitLab 命令行工具
USAGE:
gitlab-go [global options] command [command options]
VERSION:
dev
AUTHOR:
徐晓伟 <xuxiaowei@xuxiaowei.com.cn>
COMMANDS:
access-request, access-requests, ar 群组和项目访问请求 API,中文文档:https://docs.gitlab.cn/jh/api/access_requests.html
board, boards 项目议题板 API,中文文档:https://docs.gitlab.cn/jh/api/boards.html
container-registry, cr 容器仓库 API,中文文档:https://docs.gitlab.cn/jh/api/container_registry.html
environments, environment, env 环境 API,中文文档:https://docs.gitlab.cn/jh/api/environments.html
instance-level-ci-variables, instance-level-ci-variable, ilcv 实例级 CI/CD 变量 API,中文文档:https://docs.gitlab.cn/jh/api/instance_level_ci_variables.html
issue, issues 议题 API,中文文档:https://docs.gitlab.cn/jh/api/issues.html
job-artifact, job-artifacts, ja 作业产物 API,中文文档:https://docs.gitlab.cn/jh/api/job_artifacts.html
job, jobs, j 作业 API,中文文档:https://docs.gitlab.cn/jh/api/jobs.html
pipeline, pipelines, pl 流水线 API,中文文档:https://docs.gitlab.cn/jh/api/pipelines.html
project-level-variables, project-level-variable, plv 项目级别 CI/CD 变量 API,中文文档:https://docs.gitlab.cn/jh/api/project_level_variables.html
project, projects, p 项目 API,中文文档:https://docs.gitlab.cn/jh/api/projects.html
protected-branches, pb 受保护的分支 API,中文文档:https://docs.gitlab.cn/jh/api/protected_branches.html
mix-archive 归档(混合命令,多接口命令)
mix-create-project-level-variables 创建项目级别 CI/CD 变量(混合命令,多接口命令)
mix-delete, mix-rm 删除(混合命令,多接口命令)
mix-create-environments, mix-create-environment, mix-create-env 创建新环境(混合命令,多接口命令)
mix-export 导出(混合命令,多接口命令)
mix-protect-branches 保护仓库分支(混合命令,多接口命令)
mix-transfer 转移(混合命令,多接口命令)
mix-unarchive 取消归档(混合命令,多接口命令)
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 access-request --help
NAME:
gitlab-go access-request - 群组和项目访问请求 API,中文文档:https://docs.gitlab.cn/jh/api/access_requests.html
USAGE:
gitlab-go access-request command [command options]
COMMANDS:
group, groups 为群组列出访问请求
project, projects 为项目列出访问请求
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
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--id value 项目 ID 或 URL 编码的路径
--help, -h show help
$ go run main.go board --help
NAME:
gitlab-go board - 项目议题板 API,中文文档:https://docs.gitlab.cn/jh/api/boards.html
USAGE:
gitlab-go board command [command options]
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
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--id value 项目 ID 或 URL 编码的路径
--help, -h show help
$ go run main.go container-registry --help
NAME:
gitlab-go container-registry - 容器仓库 API,中文文档:https://docs.gitlab.cn/jh/api/container_registry.html
USAGE:
gitlab-go container-registry command [command options]
COMMANDS:
list 列出仓库内存储库
list-tags 列出仓库里存储库的标签
get-tag 获取仓库里存储库的某个标签的详情
delete-tag, rm-tag 删除仓库里存储库的某个标签
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
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--id value 项目 ID 或 URL 编码的路径
--repository value 仓库里存储库的 ID
--tag-name value 标签的名称
--help, -h show help
$ go run main.go environments --help
NAME:
gitlab-go environments - 环境 API,中文文档:https://docs.gitlab.cn/jh/api/environments.html
USAGE:
gitlab-go environments command [command options]
COMMANDS:
list 列举环境
create 创建新环境
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 编码的路径
--name value 环境名称
--external-url value 该环境的链接位置
--tier value 新环境的层级。允许设置的值为 production, staging, testing, development 和 other
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--help, -h show help
$ go run main.go instance-level-ci-variables --help
NAME:
gitlab-go instance-level-ci-variables - 实例级 CI/CD 变量 API,中文文档:https://docs.gitlab.cn/jh/api/instance_level_ci_variables.html
USAGE:
gitlab-go instance-level-ci-variables command [command options]
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
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--help, -h show help
$ go run main.go job-artifact --help
NAME:
gitlab-go job-artifact - 作业产物 API,中文文档:https://docs.gitlab.cn/jh/api/job_artifacts.html
USAGE:
gitlab-go job-artifact command [command options]
COMMANDS:
get 获取(下载)作业产物
download, dl 下载产物归档文件(未完成)
delete, rm 删除作业产物
delete-project, delete-projects, 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
--artifacts-name value 保存产物名称(保存到系统磁盘的名称) (default: "artifacts.zip")
--help, -h show help
$ go run main.go pipeline --help
NAME:
gitlab-go pipeline - 流水线 API,中文文档:https://docs.gitlab.cn/jh/api/pipelines.html
USAGE:
gitlab-go pipeline command [command options]
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")
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--recursion 递归 (default: false)
--id value 项目 ID 或 URL 编码的路径
--help, -h show help
$ go run main.go project-level-variables --help
NAME:
gitlab-go project-level-variables - 项目级别 CI/CD 变量 API,中文文档:https://docs.gitlab.cn/jh/api/project_level_variables.html
USAGE:
gitlab-go project-level-variables command [command options]
COMMANDS:
list 列出项目变量
create 创建变量
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 编码的路径
--key value 变量的 key。不能超过 255 个字符。仅支持 A-Z、a-z、0-9 和 _
--value value 变量的 value
--variable-type value 变量类型。可用类型为:env_var 和 file (default: "env_var")
--protected 变量是否受保护。 (default: false)
--masked 变量是否隐藏。 (default: false)
--raw 变量是否被视为原始字符串。当为 true 时,值中的变量不会扩展 (default: false)
--environment-scope value 变量的 environment_scope。 (default: "*")
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--help, -h show help
$ go run main.go protected-branches --help
NAME:
gitlab-go protected-branches - 受保护的分支 API,中文文档:https://docs.gitlab.cn/jh/api/protected_branches.html
USAGE:
gitlab-go protected-branches command [command options]
COMMANDS:
list 列出受保护的分支
protect 保护仓库分支
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 编码的路径
--search value 要搜索的受保护分支的名称或部分名称
--name value 分支或通配符的名称
--push-access-level value 允许推送的访问级别(默认值:40,维护者角色),合法值:
0:NoPermissions
5:MinimalAccessPermissions
10:GuestPermissions
20:ReporterPermissions
30:DeveloperPermissions
40:MaintainerPermissions
50:OwnerPermissions
60:AdminPermissions
(default: 40)
--merge-access-level value 允许合并的访问级别(默认值:40,维护者角色),合法值:
0:NoPermissions
5:MinimalAccessPermissions
10:GuestPermissions
20:ReporterPermissions
30:DeveloperPermissions
40:MaintainerPermissions
50:OwnerPermissions
60:AdminPermissions
(default: 40)
--unprotect-access-level value 允许取消保护的访问级别(默认值:40,维护者角色),合法值:
0:NoPermissions
5:MinimalAccessPermissions
10:GuestPermissions
20:ReporterPermissions
30:DeveloperPermissions
40:MaintainerPermissions
50:OwnerPermissions
60:AdminPermissions
(default: 40)
--allow-force-push 启用后,可以推送到该分支的成员也可以强制推送 (default: false)
--code-owner-approval-required 如果分支在 CODEOWNERS https://docs.gitlab.cn/jh/user/project/codeowners/index.html 文件中,则阻止推送到此分支。(默认值:false) (default: false)
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--help, -h show help
mix-archive 归档(混合命令,多接口命令)
$ go run main.go mix-archive --help
NAME:
gitlab-go mix-archive - 归档(混合命令,多接口命令)
USAGE:
gitlab-go mix-archive command [command options]
COMMANDS:
all 归档所有项目(混合命令,多接口命令)
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
--owned 当前用户明确拥有的项目。 (default: false)
--help, -h show help
$ go run main.go mix-create-project-level-variables --help
NAME:
gitlab-go mix-create-project-level-variables - 创建项目级别 CI/CD 变量(混合命令,多接口命令)
USAGE:
gitlab-go mix-create-project-level-variables command [command options]
COMMANDS:
all, a 所有项目创建新变量
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
--key value 变量的 key。不能超过 255 个字符。仅支持 A-Z、a-z、0-9 和 _
--value value 变量的 value
--variable-type value 变量类型。可用类型为:env_var 和 file (default: "env_var")
--protected 变量是否受保护。 (default: false)
--masked 变量是否隐藏。 (default: false)
--raw 变量是否被视为原始字符串。当为 true 时,值中的变量不会扩展 (default: false)
--environment-scope value 变量的 environment_scope。 (default: "*")
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--help, -h show help
mix-delete 删除(混合命令,多接口命令)
$ go run main.go mix-delete --help
NAME:
gitlab-go mix-delete - 删除(混合命令,多接口命令)
USAGE:
gitlab-go mix-delete command [command options]
COMMANDS:
artifact, artifacts 根据项目路径/ID、流水线IID范围删除产物(混合命令,多接口命令,立即删除)
all-artifact, all-artifacts 根据项目路径/ID删除所有产物(混合命令,多接口命令,立即删除)
job, jobs 根据项目路径/ID、流水线IID范围删除作业产物和作业日志(混合命令,多接口命令,立即删除)
all-job, all-jobs 根据项目路径/ID删除所有作业产物和作业日志(混合命令,多接口命令,立即删除)
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")
--page value 页码(默认:1),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 1)
--per-page value 每页列出的项目数(默认:20;最大:100),中文文档 https://docs.gitlab.cn/jh/api/rest/index.html#pagination (default: 20)
--id value 项目 ID 或 URL 编码的路径
--iid-range value [ --iid-range value ] 流水线ID的范围,支持范围如下:
单数:1
多个数字(使用英文逗号隔开):1,2,3,7,8,15
支持范围:5-10,
支持范围方向选择:-10(小于等于10,即:从 0 到 10),214-(大于等于214,即:从 214 到 214 + 10000,数据范围不超过 10000)
--allow-failure 允许失败 (default: false)
--help, -h show help
mix-create-environments 创建新环境(混合命令,多接口命令)
$ go run main.go mix-create-environments --help
NAME:
gitlab-go mix-create-environments - 创建新环境(混合命令,多接口命令)
USAGE:
gitlab-go mix-create-environments command [command options]
COMMANDS:
all, a 所有项目创建新环境
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
--owned 当前用户明确拥有的项目。 (default: false)
--name value 环境名称
--external-url value 该环境的链接位置
--tier value 新环境的层级。允许设置的值为 production, staging, testing, development 和 other
--allow-failure 允许失败 (default: false)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--help, -h show help
导出(混合命令,多接口命令)
$ go run main.go mix-export --help
NAME:
gitlab-go mix-export - 导出(混合命令,多接口命令)
USAGE:
gitlab-go mix-export command [command options]
COMMANDS:
all, a 导出所有(混合命令,多接口命令)
已包含:
1. git 仓库
2. wiki 仓库
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
--owned 当前用户明确拥有的项目。 (default: false)
--export-folder value 导出文件夹
--skip-project-path value [ --skip-project-path value ] 跳过项目路径
--skip-project-wiki-path value [ --skip-project-wiki-path value ] 跳过项目wiki路径
--auto-skip-exist-folder 自动跳过已存在的文件夹 (default: false)
--allow-failure 允许失败 (default: false)
--help, -h show help
保护仓库分支(混合命令,多接口命令)
$ go run main.go mix-protect-branches --help
NAME:
gitlab-go mix-protect-branches - 保护仓库分支(混合命令,多接口命令)
USAGE:
gitlab-go mix-protect-branches command [command options]
COMMANDS:
all, a 保护所有仓库分支
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
--owned 当前用户明确拥有的项目。 (default: false)
--name value 分支或通配符的名称
--push-access-level value 允许推送的访问级别(默认值:40,维护者角色),合法值:
0:NoPermissions
5:MinimalAccessPermissions
10:GuestPermissions
20:ReporterPermissions
30:DeveloperPermissions
40:MaintainerPermissions
50:OwnerPermissions
60:AdminPermissions
(default: 40)
--merge-access-level value 允许合并的访问级别(默认值:40,维护者角色),合法值:
0:NoPermissions
5:MinimalAccessPermissions
10:GuestPermissions
20:ReporterPermissions
30:DeveloperPermissions
40:MaintainerPermissions
50:OwnerPermissions
60:AdminPermissions
(default: 40)
--unprotect-access-level value 允许取消保护的访问级别(默认值:40,维护者角色),合法值:
0:NoPermissions
5:MinimalAccessPermissions
10:GuestPermissions
20:ReporterPermissions
30:DeveloperPermissions
40:MaintainerPermissions
50:OwnerPermissions
60:AdminPermissions
(default: 40)
--allow-force-push 启用后,可以推送到该分支的成员也可以强制推送 (default: false)
--code-owner-approval-required 如果分支在 CODEOWNERS https://docs.gitlab.cn/jh/user/project/codeowners/index.html 文件中,则阻止推送到此分支。(默认值:false) (default: false)
--print-json 打印 JSON (default: false)
--print-time 打印时间 (default: false)
--help, -h show help
转移(混合命令,多接口命令)
$ go run main.go mix-transfer --help
NAME:
gitlab-go mix-transfer - 转移(混合命令,多接口命令)
USAGE:
gitlab-go mix-transfer command [command options]
COMMANDS:
all, a 将一个命令空间的项目转移到新的命名空间
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
--owned 当前用户明确拥有的项目。 (default: false)
--namespace-source value 源命名空间。如:用户名、群组名
--namespace-target value 目标命名空间。如:用户名、群组名
--skip-project-path value [ --skip-project-path value ] 跳过项目路径
--help, -h show help
取消归档(混合命令,多接口命令)
$ go run main.go mix-unarchive --help
NAME:
gitlab-go mix-unarchive - 取消归档(混合命令,多接口命令)
USAGE:
gitlab-go mix-unarchive command [command options]
COMMANDS:
all 取消归档所有项目(混合命令,多接口命令)
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
--owned 当前用户明确拥有的项目。 (default: false)
--help, -h show help
gitlab-go
GitLab Go 脚手架
支持的系统
构建
本项目发布在 GitHub 进行构建,并使用构建后的程序将自己发布到各大代码托管平台,发布过程参见: GitHub Actions
下载
支持的功能
开发命令
get
mod
run
run help
access-request - 群组和项目访问请求 API
board - 项目议题板 API
container-registry - 容器仓库 API
environments 环境 API
instance-level-ci-variables - 实例级 CI/CD 变量 API
issue - 议题 API
job-artifact - 作业产物 API
job - 作业 API
pipeline - 流水线 API
project-level-variables 项目级别 CI/CD 变量 API
project - 项目 API
protected-branches 受保护的分支 API
mix-archive 归档(混合命令,多接口命令)
mix-create-project-level-variables 创建项目级别 CI/CD 变量(混合命令,多接口命令)
mix-delete 删除(混合命令,多接口命令)
mix-create-environments 创建新环境(混合命令,多接口命令)
导出(混合命令,多接口命令)
保护仓库分支(混合命令,多接口命令)
转移(混合命令,多接口命令)
取消归档(混合命令,多接口命令)
test
build
Windows
Linux
LoongArch
Darwin
鸣谢
Stargazers over time