Help us learn about your current experience with the documentation. Take the survey.

使用 GitLab CI/CD 与 GitHub 仓库

  • Tier: Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

GitLab CI/CD 可以与 GitHub.comGitHub Enterprise 一起使用, 通过创建一个 CI/CD 项目 来连接您的 GitHub 仓库到 GitLab。

观看视频 使用 GitLab CI/CD 管道与 GitHub 仓库

由于 GitHub 的限制GitHub OAuth 不能用于将 GitHub 作为外部 CI/CD 仓库进行身份验证。

使用个人访问令牌连接

个人访问令牌只能用于将 GitHub.com 仓库连接到 GitLab, 并且 GitHub 用户必须拥有 所有者角色

要对 GitHub 进行一次性授权,以授予 GitLab 访问您仓库的权限:

  1. 在 GitHub 中创建令牌:
    1. 打开 https://github.com/settings/tokens/new
    2. 创建个人访问令牌。
    3. 输入 令牌描述 并更新范围以允许 repoadmin:repo_hook,这样 GitLab 就可以访问您的项目, 更新提交状态,并创建 web hook 来通知 GitLab 新的提交。
  2. 在 GitLab 中创建项目:
    1. 在左侧边栏顶部,选择 新建 ( plus ) 和 新建项目/仓库
    2. 选择 为外部仓库运行 CI/CD
    3. 选择 GitHub
    4. 对于 个人访问令牌,粘贴令牌。
    5. 选择 列出仓库
    6. 选择 连接 来选择仓库。
  3. 在 GitHub 中,添加 .gitlab-ci.yml配置 GitLab CI/CD

GitLab:

  1. 导入项目。
  2. 启用 拉取镜像
  3. 启用 GitHub 项目集成
  4. 在 GitHub 上创建 web hook 来通知 GitLab 新的提交。

手动连接

要将 GitHub EnterpriseGitLab.com 一起使用,请使用此方法。

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

  1. 在 GitHub 中创建令牌:

    1. 打开 https://github.com/settings/tokens/new
    2. 创建个人访问令牌。
    3. 输入 令牌描述 并更新范围以允许 repo,这样 GitLab 就可以访问您的项目并更新提交状态。
  2. 在 GitLab 中创建项目:

    1. 在左侧边栏顶部,选择 新建 ( plus ) 和 新建项目/仓库
    2. 选择 为外部仓库运行 CI/CD通过 URL 的仓库
    3. Git 仓库 URL 字段中,输入您 GitHub 仓库的 HTTPS URL。 如果您的项目是私有的,使用您刚刚创建的个人访问令牌进行身份验证。
    4. 填写所有其他字段并选择 创建项目。 GitLab 会自动配置基于轮询的拉取镜像。
  3. 在 GitLab 中,启用 GitHub 项目集成

    1. 在左侧边栏,选择 设置 > 集成
    2. 选择 激活 复选框。
    3. 将您的个人访问令牌和 HTTPS 仓库 URL 粘贴到表单中并选择 保存
  4. 在 GitLab 中,创建具有 API 范围的个人访问令牌, 用于验证通知 GitLab 新提交的 GitHub web hook。

  5. 在 GitHub 中,从 设置 > Webhooks,创建一个 web hook 来通知 GitLab 新的提交。

    web hook URL 应设置为 GitLab API 以 触发拉取镜像, 使用我们刚刚创建的 GitLab 个人访问令牌:

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

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

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