GitHub 리포지터리에서 GitLab CI/CD 사용하기
GitLab CI/CD는 CI/CD 프로젝트를 생성하여 GitHub 리포지터리를 GitLab에 연결함으로써 GitHub.com 및 GitHub Enterprise와 함께 사용할 수 있습니다.
GitHub 제한 사항으로 인해, GitHub OAuth를 외부 CI/CD 리포지터리로 사용하여 GitHub를 인증할 수 없습니다.
Personal Access Token으로 연결
개인 액세스 토큰은 GitHub.com 리포지터리를 GitLab에 연결하는 데에만 사용할 수 있으며, GitHub 사용자는 소유자 역할을 가져야 합니다.
GitHub에 권한을 부여하기 위해 다음 단계를 수행합니다:
- GitHub에서 토큰을 생성합니다:
- https://github.com/settings/tokens/new을 엽니다.
- Personal Access Token을 생성합니다.
-
토큰 설명을 입력하고, 프로젝트에 대한 액세스 및 커밋 상태 업데이트, 새 커밋에 대한 GitLab 알림을 위한 웹 훅 생성을 허용하기 위해
repo
및admin:repo_hook
스코프를 업데이트합니다.
- GitLab에서 프로젝트를 생성합니다:
- 왼쪽 사이드바 상단에서 새로 만들기 () 및 새 프로젝트/리포지터리를 선택합니다.
- 외부 리포지터리용 CI/CD 실행을 선택합니다.
- GitHub을 선택합니다.
- Personal access token에 토큰을 붙여넣습니다.
- 리포지터리 디렉터리을 선택합니다.
- 연결을 선택하여 리포지터리를 선택합니다.
- GitHub에 .gitlab-ci.yml을 추가하여 GitLab CI/CD를 구성합니다.
GitLab:
- 프로젝트를 가져옵니다.
- 풀 미러링 활성화.
- GitHub 프로젝트 통합 활성화.
- GitHub에 새 커밋을 알리기 위한 웹 훅을 생성합니다.
매뉴얼으로 연결
GitLab.com에서 GitHub Enterprise를 사용하려면 이 방법을 사용하세요.
리포지터리에 대해 매뉴얼으로 GitLab CI/CD를 활성화하려면 다음을 수행하십시오:
- GitHub에서 토큰을 생성합니다:
- https://github.com/settings/tokens/new을 엽니다.
- Personal Access Token을 생성합니다.
-
토큰 설명을 입력하고, 프로젝트에 대한 액세스 및 커밋 상태 업데이트를 허용하기 위해
repo
스코프를 업데이트합니다.
- GitLab에서 프로젝트를 생성합니다:
- 왼쪽 사이드바 상단에서 새로 만들기 () 및 새 프로젝트/리포지터리를 선택합니다.
- 외부 리포지터리용 CI/CD 실행 및 URL로부터 리포지터리를 선택합니다.
- Git 리포지터리 URL 필드에 GitHub 리포지터리의 HTTPS URL을 입력합니다. 프로젝트가 비공개인 경우, 인증에 방금 생성한 개인 액세스 토큰을 사용합니다.
- 다른 모든 필드를 채우고 프로젝트 만들기를 선택합니다. GitLab은 자동으로 폴링 기반 풀 미러링을 구성합니다.
- GitLab에서 GitHub 프로젝트 통합을 활성화:
- 왼쪽 사이드바에서 설정 > 통합을 선택합니다.
- 활성 확인란을 선택합니다.
- 개인 액세스 토큰과 HTTPS 리포지터리 URL을 양식에 붙여넣고 저장을 선택합니다.
- GitLab에서 새 커밋을 알리기 위해
API
범위로 Personal Access Token을 생성합니다. -
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 requests 및 Pushes 확인란을 선택합니다. 이러한 설정은 외부 풀 요청을위한 파이프라인에 필요합니다.
- GitHub에 .gitlab-ci.yml을 추가하여 GitLab CI/CD를 구성합니다.