【发布时间】:2016-05-05 12:07:29
【问题描述】:
这是我第一次使用 Jenkins,浏览了几篇在线文章,但都没有找到满意的答案。我们有 .Net 项目,我们正在使用私有 GitHub 存储库。现在我正在尝试使用 Jenkins 构建 CI 服务器。想法是每当开发人员将代码推送到 GitHub 时,我们都希望在 CI 服务器上构建项目。 我已经在 CI 服务器上安装了 Jenkins (v 1.646) 和 GitHub、Git 和 MSBuild 插件。在与 Jenkins 合作了几个小时之后,我现在有几个问题。
1> 默认情况下,Jenkins 在端口 8080 上运行。但是要使持续集成正常工作,Jenkins 必须从 GitHub 接收通知。默认情况下,端口 8080 与外界隔绝,在 CI 服务器上,端口 80 是开放的。我更新了 Jenkins.xml 文件中的 httpport,因此 Jenkins 在端口 80 上运行。
我可以从公共互联网访问 Jenkins,并且网络挂钩 URL 现在是 http://ipaddress/github-webhook 但这会打开一个很大的安全漏洞,因为现在任何人都可以访问 Jenskins。为了解决这个问题,我配置了全局安全 -> 基于项目的矩阵授权策略。所以现在只有我可以登录和管理项目。但是任何人仍然可以输入 IP 地址,登陆 Jenkins 页面并创建新用户帐户。 Ofcource 该用户无法访问任何内容,但仍会在 Jenkins 的数据库中创建一个新用户
那么有没有办法像往常一样在端口 8080 上运行 Jenkins 管理,但在端口 80 上收到通知
2> 在 Jenkins 的系统配置页面上,我只看到“Git”和“GitHub 插件配置”。我没有看到“GitHub Web Hook”选项,也没有看到“让 Jenkins 自动管理挂钩 URL”在 1.646 版中有所更改
3> 由于我们使用的是私有存储库,因此我们的项目 URL 是 https://github.com/MyCompanyName/reponame,存储库 URL 是 https://github.com/MyCompanyName/reponame.git 请注意,该 url 包含公司名称而不是用户名。但我看到错误 Jenkins 日志
未能从 GitHubRepositoryName[host=github.com,username=MyCompanyName,repository=reponame] java.lang.NullPointerException:管理员没有凭据 访问管理挂钩 GitHubRepositoryName[host=github.com,username=MyCompanyName,repository=reponame] 在 com.google.common.base.Preconditions.checkNotNull(Preconditions.java:231)
为什么它试图使用公司名作为用户名?我已经设置了正确的用户凭据,它能够提取代码。
【问题讨论】:
标签: git github jenkins github-api