GitHub 리포지터리에서 GitLab CI/CD 사용하기

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

GitLab CI/CD는 CI/CD 프로젝트를 생성하여 GitHub 리포지터리를 GitLab에 연결함으로써 GitHub.comGitHub Enterprise와 함께 사용할 수 있습니다.

GitHub 제한 사항으로 인해, GitHub OAuth를 외부 CI/CD 리포지터리로 사용하여 GitHub를 인증할 수 없습니다.

Personal Access Token으로 연결

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

GitHub에 권한을 부여하기 위해 다음 단계를 수행합니다:

  1. GitHub에서 토큰을 생성합니다:
    1. https://github.com/settings/tokens/new을 엽니다.
    2. Personal Access Token을 생성합니다.
    3. 토큰 설명을 입력하고, 프로젝트에 대한 액세스 및 커밋 상태 업데이트, 새 커밋에 대한 GitLab 알림을 위한 웹 훅 생성을 허용하기 위해 repoadmin:repo_hook 스코프를 업데이트합니다.
  2. GitLab에서 프로젝트를 생성합니다:
    1. 왼쪽 사이드바 상단에서 새로 만들기 () 및 새 프로젝트/리포지터리를 선택합니다.
    2. 외부 리포지터리용 CI/CD 실행을 선택합니다.
    3. GitHub을 선택합니다.
    4. Personal access token에 토큰을 붙여넣습니다.
    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. Personal Access Token을 생성합니다.
    3. 토큰 설명을 입력하고, 프로젝트에 대한 액세스 및 커밋 상태 업데이트를 허용하기 위해 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에서 새 커밋을 알리기 위해 API 범위로 Personal Access Token을 생성합니다.
  5. GitHub에서 Settings > Webhooks에서 새 커밋을 GitLab에 알리기 위한 웹 훅을 생성합니다.

    웹 훅 URL은 방금 생성한 GitLab 개인 액세스 토큰을 사용하여 풀 미러링을 시작하기 위한 GitLab API로 설정되어야 합니다:

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

    개별 이벤트 선택 옵션을 선택한 다음 Pull requestsPushes 확인란을 선택합니다. 이러한 설정은 외부 풀 요청을위한 파이프라인에 필요합니다.

  6. GitHub에 .gitlab-ci.yml을 추가하여 GitLab CI/CD를 구성합니다.