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

Tier: 프리미엄, 얼티밋 Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab CI/CD는 GitHub.com 및 GitHub Enterprise에서 CI/CD 프로젝트를 생성하여 GitHub 저장소를 GitLab에 연결함으로써 사용할 수 있습니다.

GitHub 저장소와 함께 GitLab CI/CD 파이프라인 사용하기 비디오를 시청하세요.

note
GitHub 제한 사항으로 인해 GitHub OAuth를 사용하여 GitHub를 외부 CI/CD 저장소로 인증할 수 없습니다.

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

개인 액세스 토큰은 GitHub.com 저장소를 GitLab에 연결하는 데에만 사용할 수 있으며, GitHub 사용자는 소유자 권한을 가지고 있어야 합니다.

GitHub에서 귀하의 저장소에 GitLab이 접근하고 커밋 상태를 업데이트하며 GitLab에 새로운 커밋을 알리기 위해 일회성 권한 부여를 수행하려면:

  1. GitHub에서 토큰을 생성하세요:
    1. https://github.com/settings/tokens/new을 엽니다.
    2. 개인 액세스 토큰을 생성합니다.
    3. 토큰 설명을 입력하고 GitLab이 귀하의 프로젝트에 액세스하고 커밋 상태를 업데이트하며 새로운 커밋을 알릴 수 있도록 repoadmin:repo_hook을 허용하도록 스코프를 업데이트합니다.
  2. GitLab에서 프로젝트를 생성하세요:
    1. 왼쪽 사이드바에서 상단에 있는 새 프로젝트/저장소 만들기를 선택합니다.
    2. 외부 저장소의 CI/CD 실행를 선택합니다.
    3. GitHub을 선택합니다.
    4. 개인 액세스 토큰에 토큰을 붙여넣습니다.
    5. 저장소 목록 보기를 선택합니다.
    6. 저장소를 선택하기 위해 연결을 선택합니다.
  3. GitHub에서 .gitlab-ci.yml을 추가하여 GitLab CI/CD를 구성하세요.

GitLab:

  1. 프로젝트를 가져옵니다.
  2. 풀 미러링을 활성화합니다.
  3. GitHub 프로젝트 통합을 활성화합니다.
  4. GitHub에 새로운 커밋을 알리기 위해 웹훅을 생성합니다.

수동 연결하기

GitLab.com에서 GitHub Enterprise를 사용하려면 이 방법을 사용하세요.

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

  1. GitHub에서 토큰을 생성하세요:
    1. https://github.com/settings/tokens/new을 엽니다.
    2. 개인 액세스 토큰을 생성합니다.
    3. 토큰 설명을 입력하고 GitLab이 귀하의 프로젝트에 액세스하고 커밋 상태를 업데이트할 수 있도록 repo를 허용하도록 스코프를 업데이트합니다.
  2. GitLab에서 프로젝트를 생성하세요:
    1. 왼쪽 사이드바에서 상단에 있는 새 프로젝트/저장소 만들기를 선택합니다.
    2. 외부 저장소의 CI/CD 실행URL별 저장소를 선택합니다.
    3. Git 저장소 URL 필드에 GitHub 저장소의 HTTPS URL을 입력합니다. 프로젝트가 비공개인 경우 방금 생성한 개인 액세스 토큰을 사용하여 인증합니다.
    4. 모든 다른 필드를 작성하고 프로젝트 생성을 선택합니다. GitLab은 자동으로 폴링 기반 풀 미러링을 구성합니다.
  3. GitLab에서 GitHub 프로젝트 통합을 활성화하세요:
    1. 왼쪽 사이드바에서 설정 > 통합을 선택합니다.
    2. 활성 확인란을 선택합니다.
    3. 개인 액세스 토큰 및 HTTPS 저장소 URL을 양식에 붙여넣고 저장을 선택합니다.
  4. GitLab에서 GitHub 웹훅에 새로운 커밋을 알리기 위해 API 스코프로 개인 액세스 토큰을 생성하세요.
  5. GitHub에서 설정 > 웹훅에서 새로운 커밋을 GitLab에 알리기 위한 웹훅을 생성하세요.

    웹훅 URL은 방금 생성한 GitLab 개인 액세스 토큰을 사용하여 프로젝트의 풀 미러링을 트리거하는 GitLab API로 설정되어야 합니다:

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

    개별 이벤트 선택 옵션을 선택한 후 풀 리퀘스트푸시 확인란을 선택합니다. 이러한 설정은 외부 풀 리퀘스트용 파이프라인에 필요합니다.

  6. GitHub에서 .gitlab-ci.yml을 추가하여 GitLab CI/CD를 구성하세요.