# 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/%2F/mirror/pull?private_token= ``` 选择" **让我选择单个事件"**选项,然后选中" **拉**取**请求**和**推送"**复选框. [对于外部拉取请求的管道,](index.html#pipelines-for-external-pull-requests)需要这些设置. 6. 在 GitHub 中添加`.gitlab-ci.yml`以配置 GitLab CI / CD.