243.md 4.3 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
# Using GitLab CI/CD with a GitHub repository

> 原文:[https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html](https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/github_integration.html)

*   [Connect with Personal Access Token](#connect-with-personal-access-token)
*   [Connect manually](#connect-manually)

# Using GitLab CI/CD with a GitHub repository[](#using-gitlab-cicd-with-a-github-repository-premium "Permalink")

通过创建[CI / CD 项目](index.html)将 GitHub 存储库连接到 GitLab,GitLab CI / CD 可与**GitHub.com****GitHub Enterprise**一起使用.

观看有关在[GitHub 存储库中使用 GitLab CI / CD 管道](https://www.youtube.com/watch?v=qgl3F2j-1cI)的视频.

**注意:**由于[GitHub 的限制](https://gitlab.com/gitlab-org/gitlab/-/issues/9147) ,不能将[GitHub OAuth](../../integration/github.html#enabling-github-oauth)用于作为外部 CI / CD 存储库的 GitHub 进行身份验证.

## Connect with Personal Access Token[](#connect-with-personal-access-token "Permalink")

**注意:**个人访问令牌只能用于将 GitHub.com 存储库连接到 GitLab,并且 GitHub 用户必须具有[owner 角色](https://help.github.com/en/github/getting-started-with-github/access-permissions-on-github) .

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

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

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

2.  在 GitLab 中,转到[新项目页面](../../gitlab-basics/create-project.html#create-a-project-in-gitlab) ,选择**CI / CD 作为外部仓库**选项卡,然后单击**GitHub** .

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

4.  在 GitHub 中,添加`.gitlab-ci.yml`[配置 GitLab CI / CD](../quick_start/README.html) .

GitLab 将:

1.  导入项目.
2.  Enable [Pull Mirroring](../../user/project/repository/repository_mirroring.html#pulling-from-a-remote-repository-starter)
3.  Enable [GitHub project integration](../../user/project/integrations/github.html)
4.  在 GitHub 上创建一个 Web 挂钩,以通知 GitLab 新提交.

## Connect manually[](#connect-manually "Permalink")

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

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

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

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

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

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

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

3.  仍在 GitLab 中,从**"设置">"集成"**启用[GitHub 项目](../../user/project/integrations/github.html) **集成.**

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

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

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

    应使用我们刚刚创建的 GitLab 个人访问令牌,将 Web 挂钩 URL 设置为 GitLab API 来[触发拉镜像](../../api/projects.html#start-the-pull-mirroring-process-for-a-project-starter) :

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

    选择" **让我选择单个事件"**选项,然后选中" **拉**取**请求**和**推送"**复选框. [对于外部拉取请求的管道,](index.html#pipelines-for-external-pull-requests)需要这些设置.

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