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

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

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

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

note
GitHub limitations 때문에 GitHub OAuth를 사용하여 GitHub 외부 CI/CD 저장소로 인증할 수 없습니다.

Personal Access Token으로 연결하기

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

GitHub에서 GitLab에 액세스 권한을 부여하기 위해 일회성 권한 부여를 수행하려면:

  1. GitHub에서 토큰을 생성하세요:
    1. https://github.com/settings/tokens/new를 엽니다.
    2. 개인 액세스 토큰을 생성하세요.
    3. 토큰 설명을 입력하고 repoadmin:repo_hook을 허용하도록 스코프를 업데이트하여 GitLab이 프로젝트에 액세스하고 커밋 상태를 업데이트하며 GitLab에 새 커밋을 알리는 웹 훅을 생성할 수 있도록 합니다.
  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에 알리기 위한 웹 훅을 생성합니다.

수동으로 연결하기

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

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

  1. GitHub에서 토큰을 생성하세요:
    1. https://github.com/settings/tokens/new를 엽니다.
    2. 개인 액세스 토큰을 생성하세요.
    3. 토큰 설명을 입력하고 repo를 허용하도록 스코프를 업데이트하여 GitLab이 프로젝트에 액세스하고 커밋 상태를 업데이트할 수 있도록 합니다.
  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를 구성하세요.