InfoGrab Docs

GitLab CI/CD에서 Git 서브모듈 사용

Use Git submodules to include code from other repositories in CI/CD pipelines with relative URLs, absolute URLs, and CI/CD variables.

Git 서브모듈 을 사용하여 다른 Git 리포지터리의 서브디렉토리로 Git 리포지터리를 유지할 수 있습니다. 다른 리포지터리를 프로젝트에 클론하고 커밋을 분리하여 유지할 수 있습니다. .gitmodules 파일 구성 # Git 서브모듈을 사용할 때 프로젝트에는 .gitmodules 라는 파일이 있어야 합니다. GitLab CI/CD 작업에서 작동하도록 구성하는 여러 옵션이 있습니다. 절대 URL 사용 # 히스토리 GitLab Runner 15.11에서 도입 . 예를 들어, 다음과 같은 경우에 생성된 .gitmodules 설정은 다음과 같을 수 있습니다: 프로젝트가 https://gitlab.com/secret-group/my-project 에 위치한 경우. 프로젝트가 서브모듈로 포함하려는 https://gitlab.com/group/project 에 의존하는 경우. git@gitlab.com:secret-group/my-project.git 과 같은 SSH 주소로 소스를 체크아웃하는 경우. [submodule "project"] path = project url = git@gitlab.com:group/project.git 이 경우 GIT_SUBMODULE_FORCE_HTTPS 변수를 사용하여 GitLab Runner가 서브모듈을 클론하기 전에 URL을 HTTPS로 변환하도록 지시하세요. 또는 로컬에서도 HTTPS를 사용하는 경우 HTTPS URL을 구성할 수 있습니다: [submodule "project"] path = project url = https://gitlab.com/group/project.git 이 경우 추가 변수를 구성할 필요가 없지만, 로컬에서 클론하려면 개인 접근 토큰 을 사용해야 합니다. 상대 URL 사용 # Warning 상대 URL을 사용하는 경우, 포크 워크플로우에서 서브모듈이 잘못 해석될 수 있습니다. 프로젝트에 포크가 있을 것으로 예상되는 경우 절대 URL을 대신 사용하세요. 서브모듈이 동일한 GitLab 서버에 있는 경우 .gitmodules 파일에서 상대 URL을 사용할 수도 있습니다: [submodule "project"] path = project url = ../../project.git 위의 설정은 소스를 클론할 때 사용할 URL을 자동으로 추론하도록 Git에 지시합니다. 모든 CI/CD 작업에서 HTTPS로 클론하고, 로컬에서는 계속 SSH를 사용하여 클론할 수 있습니다. 동일한 GitLab 서버에 없는 서브모듈의 경우 항상 전체 URL을 사용하세요: [submodule "project-x"] path = project-x url = https://gitserver.com/group/project-x.git CI/CD 작업에서 Git 서브모듈 사용 # 사전 요구 사항: 파이프라인 작업에서 CI_JOB_TOKEN 을 사용하여 서브모듈을 클론하는 경우 코드를 가져오려면 서브모듈 리포지터리에 대한 Reporter, Developer, Maintainer 또는 Owner 권한이 있어야 합니다. CI/