# JAVA 调用 GitLab API 方式
# 引言
因为项目需求,想在另一套系统内修改 GitLab 上的数据,主要功能有【创建仓库,添加人员,删除人员,上传代码】。于是在网上找到了两个 SDK 的包分别是
java-gitlab-api 和 gitlab4j-api,感觉两者并无优劣,都提供了非常优秀的使用文档:java-gitlab-api 文档和 gitlab4j-api 文档。而本文主要讲述了 gitlab4j-api 的使用
# GitLab API
虽说最后用的是 SDK 包,但还是自己看着 GitLab API 用 SDK 包方法熟练点。因为 GitLab 的 API 文档写的看起来更舒服
网上 API 文档:https://docs.gitlab.com/ee/api/projects.html#project-visibility-level
自己项目中 API 文档:首先点击 Help ,选中 Integration and Automation 下的 GitLab API
# 如何使用 GitLab API
调用 GitLab API 需要身份 token,在请求头 header 中以 key:PRIVATE-TOKEN,vlaue:你的 token 方式请求如下图文档
# 如何申请 token
通过个人的 settings 选择 Access Tokens 界面申请一个即可,但这是你本人的身份的 token,公司项目建议用管理员的
所以在 JAVA 中可以使用 HttpClient 类等 HTTP 请求的方式去调用,竟然已经知道手动调用了。那就用 SDK 包吧
# 使用 gitlab4j-api
# pom.xml
<dependency> | |
<groupId>org.gitlab4j</groupId> | |
<artifactId>gitlab4j-api</artifactId> | |
<version>4.15.7</version> | |
</dependency> |
# 创建项目
GitLabApi gitLabApi = new GitLabApi("gitlab的url地址", "token值"); | |
Project project1 = new Project().withName("仓库名称").withPath("仓库路径") | |
.withDefaultBranch("分支名一般填master").withDescription("仓库描述").withNamespaceId("数字:组id"); | |
try { | |
Project project = gitLabApi.getProjectApi().createProject(project1); | |
} catch (GitLabApiException e) { | |
e.printStackTrace(); | |
} |
# 上传代码
上传代码我没有在 GitLab 上找到 API ,于是用来命令方式调用实现同步代码,详情可以参考 JAVA 如何调用系统命令
# 总结
先说说我在这次开发过程中遇到问题和建议吧
-
【问题】自己通过 HttpClient 类手动造轮子,后来才发现有这方面的 SDK 包(眼界过低,没有想到这方面)
-
【建议】英语不好的朋友可以在个人 setting–>Preferences 上设置 GitLab 的中文版(API 那边不会变中文,但也舒服些)
-
【建议】不论是 gitlab4j-api 还是 java-gitlab-api 的文档,参数方法都可以在 GitLab 上找到原型,对意思的理解可能更到位
-
【建议】建议使用能翻译网页的插件方便阅读与使用
总而言之这个技术是一次繁琐且简单的实践,路都有前人铺好,而我们应该走的更远。