Using GitLab CI/CD with a GitHub repository

原文:https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html

Using GitLab CI/CD with a GitHub repository

通过创建CI / CD 项目将 GitHub 存储库连接到 GitLab,GitLab CI / CD 可与GitHub.comGitHub Enterprise一起使用.

观看有关在GitHub 存储库中使用 GitLab CI / CD 管道的视频.

注意:由于GitHub 的限制 ,不能将GitHub OAuth用于作为外部 CI / CD 存储库的 GitHub 进行身份验证.

Connect with Personal Access Token

注意:个人访问令牌只能用于将 GitHub.com 存储库连接到 GitLab,并且 GitHub 用户必须具有owner 角色 .

要通过 GitHub 一次性授权以授予 GitLab 访问您的存储库的权限,请执行以下操作:

  1. 打开https://github.com/settings/tokens/new来创建个人访问令牌 . 该令牌将用于访问您的存储库并将提交状态推送到 GitHub.

    应该启用repoadmin:repo_hook以允许 GitLab 访问您的项目,更新提交状态并创建 Web 挂钩以将新提交通知 GitLab.

  2. 在 GitLab 中,转到新项目页面 ,选择CI / CD 作为外部仓库选项卡,然后单击GitHub .

  3. 将令牌粘贴到” 个人访问令牌”字段中,然后单击” 列出存储库” . 单击” 连接”以选择存储库.

  4. 在 GitHub 中,添加.gitlab-ci.yml配置 GitLab CI / CD .

GitLab 将:

  1. 导入项目.
  2. Enable Pull Mirroring
  3. Enable GitHub project integration
  4. 在 GitHub 上创建一个 Web 挂钩,以通知 GitLab 新提交.

Connect manually

注意:要将GitHub EnterpriseGitLab.com 一起使用,请使用此方法.

要为您的存储库手动启用 GitLab CI / CD:

  1. 在 GitHub 中打开https://github.com/settings/tokens/new创建个人访问令牌. GitLab 将使用此令牌访问您的存储库并推送提交状态.

    输入令牌描述并更新范围以允许:

    repo以便 GitLab 可以访问您的项目并更新提交状态

  2. 在 GitLab 中,使用 Git URL 选项和 GitHub 存储库的 HTTPS URL 创建一个CI / CD 项目 . 如果您的项目是私人项目,请使用您刚创建的个人访问令牌进行身份验证.

    GitLab 将自动配置基于轮询的拉镜像.

  3. 仍在 GitLab 中,从“设置”>”集成”启用GitHub 项目 集成.

    选中” 活动”复选框以启用集成,将您的个人访问令牌和 HTTPS 存储库 URL 粘贴到表单中,然后保存.

  4. 仍在 GitLab 中,创建具有API范围的个人访问令牌 ,以验证 GitHub Web 挂钩,以通知 GitLab 新提交.

  5. 在 GitHub 中的“设置”>” Webhooks”中创建一个 Web 挂钩,以通知 GitLab 新提交.

    应使用我们刚刚创建的 GitLab 个人访问令牌,将 Web 挂钩 URL 设置为 GitLab API 来触发拉镜像

    1. https://gitlab.com/api/v4/projects/<NAMESPACE>%2F<PROJECT>/mirror/pull?private_token=<PERSONAL_ACCESS_TOKEN>

    选择” 让我选择单个事件”选项,然后选中” 请求推送”复选框. 对于外部拉取请求的管道,需要这些设置.

  6. 在 GitHub 中添加.gitlab-ci.yml以配置 GitLab CI / CD.