如何使用Kohsuke的Java版GitHub API连接企业实例获取仓库信息并安装GitHub Apps
身份验证(连接GitHub企业实例)
GitHub已废弃密码登录方式,统一使用个人访问令牌(PAT)完成身份验证,同时需要指定企业实例的API端点,避免默认连接公共GitHub:
import org.kohsuke.github.GitHub; import org.kohsuke.github.GitHubBuilder; import org.kohsuke.github.GHRepository; import java.io.File; public class AppInstaller { public static void main(String[] args) throws Exception { // 替换为你的GitHub企业实例API端点,固定格式为https://<企业GitHub域名>/api/v3 String ghEnterpriseEndpoint = "https://github.your-company.com/api/v3"; // 替换为你在企业GitHub后台生成的PAT String personalAccessToken = "ghp_xxxxxxxxxxxxxxx"; // 构建客户端实例,完成身份验证 GitHub github = new GitHubBuilder() .withEndpoint(ghEnterpriseEndpoint) .withOAuthToken(personalAccessToken) .build(); // 验证连接是否生效 System.out.println("连接成功,当前登录账号:" + github.getMyself().getLogin());
获取仓库基础信息
所有GHRepository对象必须通过已验证的GitHub客户端获取,不能自行new实例,获取指定仓库信息的代码如下:
// 替换为目标仓库的完整路径,格式为<组织名/用户名>/<仓库名> String repoFullPath = "your-org/your-repo-name"; GHRepository repo = github.getRepository(repoFullPath); // 打印基础信息示例,可按需扩展 System.out.println("仓库全名:" + repo.getFullName()); System.out.println("仓库描述:" + repo.getDescription()); System.out.println("Star数量:" + repo.getStargazersCount()); System.out.println("是否公开:" + repo.isPublic());
代码安装GitHub App
前提条件:你拥有该GitHub App的管理员权限,且用于验证的PAT具备目标组织/仓库的管理员权限,提前准备好GitHub App的ID、App私钥文件(.pem格式):
// 替换为你的GitHub App ID String appId = "123456"; // 替换为你存储App私钥文件的本地路径 String privateKeyPath = "/path/to/your-app-private-key.pem"; // 以GitHub App身份完成验证 GitHub appClient = new GitHubBuilder() .withEndpoint(ghEnterpriseEndpoint) .withJwtToken(appId, new File(privateKeyPath).toPath()) .build(); // 替换为要安装App的目标组织名,也可指定具体仓库安装 String targetOrg = "target-org-name"; appClient.getApp().install(targetOrg); // 如需获取安装后的App实例,可调用以下代码 // GHAppInstallation installation = appClient.getApp().getInstallationByOrganization(targetOrg); } }
注意事项
- 生成PAT时需勾选对应权限:读取仓库信息要勾选
repo权限,安装GitHub App要勾选admin:org和admin:repo_hook权限 - 运行代码的机器需要能正常访问企业GitHub实例的API端口
- GitHub App本身需提前配置好所需的权限范围,安装后才会生效
内容的提问来源于stack exchange,提问作者Joseph Gordon Leiber
相关产品推荐
相关产品推荐

