使用 gitlab java api 连接到 gitlab

Posted

技术标签:

【中文标题】使用 gitlab java api 连接到 gitlab【英文标题】:connect to a gitlab using gitlab java api 【发布时间】:2017-04-30 22:51:08 【问题描述】:

我对 gitlab 非常“愚蠢”,我的问题听起来很愚蠢......但是它的去向......

我想使用 java 连接到 gitlab 存储库,这个想法只是检索存储库的“条目”列表

我似乎有一些 java 代码,但我不确定发送到“连接”方法的 url 会是什么。

使用网络浏览器,网址类似于https://gitlab.zzz.com/

示例: 公共静态 GitlabSession 连接(字符串 hostUrl,字符串用户名,字符串密码)抛出 IOException 字符串tailUrl = GitlabSession.URL; GitlabAPI api = connect(hostUrl, null, null, null); return api.dispatch().with("login", username).with("password", password) .to(tailUrl, GitlabSession.class);

另外,我只有用户名和密码..没有oauth令牌..没有令牌可以连接吗?

我很抱歉我的愚蠢问题,也许你们中的一些人可以提供一些如何开始的提示。

谢谢 罗克

【问题讨论】:

【参考方案1】:

从 Gitlab 获取数据的正确方法是通过 Gitlab API (https://docs.gitlab.com/ee/api/README.html)。根据文档,您首先使用您的用户名和密码获得令牌。此外,您使用此令牌访问其他资源

【讨论】:

谢谢,但“我的”问题从使用 gitlab.zzz.com 连接的 url 开始,用户名和密码出现此错误 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException : PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效认证路径.. 在这种情况下,url 是什么? 您应该使用 Gitlab 证书来加密您的请求,或者编写您的代码,例如您信任所有证书。【参考方案2】:

您可以使用 GitLab4J (https://github.com/gmessner/gitlab4j-api) 来执行此操作。它允许您使用用户名和密码进行连接,并在内部处理返回的会话令牌。

// Create a GitLabApi instance to communicate with your GitLab server
GitLabApi gitLabApi = GitLabApi.login("http://your.gitlab.server.com", "USERNAME", "PASSWORD");

// Get the list of projects your account has access to
List<Project> projects = gitLabApi.getProjectApi().getProjects();

【讨论】:

谢谢,但我不再参与需要此操作的项目,“项目经理”没有关于他们如何解决此问题的任何反馈。【参考方案3】:

我能够使用以下 Java gitlab API 连接到 gitlab。为此,您需要允许防火墙。

@RestController
@RequestMapping("/test")`enter code here`
public class GitlabController 

    @RequestMapping("/hello")
    public String getGitData() throws GitLabApiException 

        System.out.println("going to execute gitlab api..");
        GitLabApi gitLabApi = GitLabApi.login("https://gitlab.<domain>.com/", "USERNAME", "PASSWORD");
        User currentUser = gitLabApi.getUserApi().getCurrentUser();
        System.out.println(currentUser.getUsername());
        return "returning from git Controller";
    


【讨论】:

你能告诉我你如何为 https url 设置防火墙

以上是关于使用 gitlab java api 连接到 gitlab的主要内容,如果未能解决你的问题,请参考以下文章

从 GitLab CI 运行器连接到 docker-in-docker

连接到 gitlab 时使用 ssh 面临身份验证失败

使用 ssh 密钥连接到 gitlab 项目

使用 android studio 将我的项目连接到 gitlab

在 Android Studio 上连接到 GitLab 存储库

如何使用证书将 gitlab 连接到现有的 kubernetes 集群