GitHub 저장소에서 GitLab CI/CD 사용하기

GitHub 저장소에서 GitLab CI/CD 사용하기

GitHub 저장소를 GitLab에 연결하고 그 위에서 GitLab CI/CD를 실행할 수 있어요. GitHub.comGitHub Enterprise 모두 지원하며, CI/CD 프로젝트를 만들어 GitHub 저장소를 GitLab에 연결하는 방식이에요.

출처: 문서

본문

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

GitHub 저장소와 함께 GitLab CI/CD 파이프라인 사용하기 영상도 볼 수 있어요.

GitHub의 제한 때문에, GitHub OAuth는 GitHub를 외부 CI/CD 저장소로 인증하는 데 사용할 수 없어요.

개인 액세스 토큰으로 연결하기

개인 액세스 토큰은 GitHub.com 저장소를 GitLab에 연결하는 데만 사용할 수 있고, GitHub 사용자는 owner 역할을 가져야 해요.

GitLab이 저장소에 접근할 수 있도록 GitHub에 일회성 인증을 수행하려면:

  1. GitHub에서 토큰을 만들어요. https://github.com/settings/tokens/new를 열어요. 개인 액세스 토큰을 만들어요. Token description을 입력하고, GitLab이 프로젝트에 접근하고 커밋 상태를 갱신하며 새 커밋을 GitLab에 알려줄 웹훅을 만들 수 있도록 범위를 repoadmin:repo_hook으로 갱신해요.
  2. GitLab에서 프로젝트를 만들어요. 오른쪽 상단에서 Create new(플러스)를 선택하고 New project/repository를 선택해요. Run CI/CD for external repository를 선택해요. GitHub를 선택해요. Personal access token에 토큰을 붙여넣어요. List Repositories를 선택해요. Connect를 선택해 저장소를 고르세요.
  3. GitHub에 GitLab CI/CD를 설정하기 위해 .gitlab-ci.yml을 추가해요.

GitLab은 다음 작업을 수행해요.

  1. 프로젝트를 가져와요.
  2. pull mirroring을 활성화해요.
  3. GitHub 프로젝트 통합을 활성화해요.
  4. 새 커밋을 GitLab에 알려줄 웹훅을 GitHub에 만들어요.

수동으로 연결하기

GitLab.comGitHub Enterprise를 사용한다면 이 방법을 써요.

저장소에 GitLab CI/CD를 수동으로 활성화하려면:

  1. GitHub에서 토큰을 만들어요. https://github.com/settings/tokens/new를 열어요. 개인 액세스 토큰을 만들어요. Token description을 입력하고 GitLab이 프로젝트에 접근하고 커밋 상태를 갱신하도록 범위를 repo로 갱신해요.
  2. GitLab에서 프로젝트를 만들어요. 오른쪽 상단에서 Create new(플러스)를 선택하고 New project/repository를 선택해요. Run CI/CD for external repositoryRepository by URL을 선택해요. Git repository URL 필드에 GitHub 저장소의 HTTPS URL을 입력해요. 프로젝트가 비공개라면 방금 만든 개인 액세스 토큰으로 인증해요. 나머지 필드를 모두 채우고 Create project를 선택해요. GitLab이 폴링 기반의 pull mirroring을 자동으로 구성해요.
  3. GitLab에서 GitHub 프로젝트 통합을 활성화해요. 왼쪽 사이드바에서 Settings > Integrations를 선택해요. Active 체크박스를 선택해요. 개인 액세스 토큰과 HTTPS 저장소 URL을 양식에 붙여넣고 Save를 선택해요.
  4. GitLab에서 새 커밋을 GitLab에 알려주는 GitHub 웹훅을 인증할 API 범위의 개인 액세스 토큰을 만들어요.
  5. GitHub의 Settings > Webhooks에서 새 커밋을 GitLab에 알려줄 웹훅을 만들어요. 웹훅 URL은 방금 만든 GitLab 개인 액세스 토큰을 사용해 pull mirroring을 트리거하는 GitLab API로 설정해야 해요. Let me select individual events 옵션을 선택하고 Pull requestsPushes 체크박스를 선택해요. 이 설정은 외부 pull request용 파이프라인에 필요해요.
https://gitlab.com/api/v4/projects/<NAMESPACE>%2F<PROJECT>/mirror/pull?private_token=<PERSONAL_ACCESS_TOKEN>
  1. GitHub에 GitLab CI/CD를 설정할 .gitlab-ci.yml을 추가해요.

더 알아보기

GitHub 저장소와 GitLab을 연결했다면 외부 저장소용 CI/CD 문서에서 외부 pull request 파이프라인이나 미러링 동작을 더 자세히 살펴볼 수 있어요. Bitbucket 연동 방식과 비교해 보면 자신의 저장소 호스팅에 맞는 최적의 연결 방법을 알 수 있어요.