튜토리얼: Google Artifact Registry로 푸시하는 GitLab 파이프라인 만들기
GitLab v19.5요약
GitLab을 Google Cloud에 연결하고, Compute Engine의 러너를 사용해 이미지를 Artifact Registry로 푸시하는 GitLab 파이프라인을 만드는 방법을 배웁니다. 이 페이지의 명령을 실행하려면 다음 개발 환경 중 하나에서 gcloud CLI를 설정합니다.
GitLab을 Google Cloud에 연결하고, Compute Engine의 러너를 사용해 이미지를 Artifact Registry로 푸시하는 GitLab 파이프라인을 만드는 방법을 배웁니다.
시작하기 전에#
-
이 페이지의 명령을 실행하려면 다음 개발 환경 중 하나에서
gcloudCLI를 설정합니다. -
Google Cloud 프로젝트를 새로 만들거나 기존 프로젝트를 선택합니다.
[!note] 이 절차에서 만드는 리소스를 계속 유지할 계획이 없다면, 기존 프로젝트를 선택하는 대신 새 Google Cloud 프로젝트를 만듭니다. 이 단계를 마친 뒤에는 프로젝트를 삭제해 해당 프로젝트와 관련된 모든 리소스를 제거할 수 있습니다.
Google Cloud 프로젝트를 만들려면 다음 명령을 실행합니다.
gcloud projects create PROJECT_IDPROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다. -
만든 Google Cloud 프로젝트를 선택합니다.
gcloud config set project PROJECT_IDPROJECT_ID를 Google Cloud 프로젝트 이름으로 바꿉니다. -
Compute Engine API와 Artifact Registry API를 활성화합니다.
gcloud services enable compute.googleapis.com artifactregistry.googleapis.com -
Google Cloud Workload Identity Federation 및 IAM 정책의 안내에 따라 GitLab on Google Cloud 통합을 설정합니다.
-
GitLab 프로젝트에서 Google Artifact Registry 설정하기의 안내에 따라 Artifact Registry 리포지터리를 GitLab 프로젝트에 연결합니다.
GitLab 리포지터리 클론하기#
- SSH 또는 HTTPS를 사용해 GitLab 리포지터리를 작업 환경으로 클론하려면 Git 리포지터리를 로컬 컴퓨터로 클론하기의 안내를 따릅니다.
- 로컬 셸에서 작업하는 경우 Terraform을 설치합니다. Cloud Shell에는 Terraform이 이미 설치되어 있습니다.
Dockerfile 만들기#
-
클론한 리포지터리에
Dockerfile이라는 새 파일을 만듭니다. -
다음 내용을
Dockerfile에 복사해 붙여넣습니다.# Dockerfile for test purposes. Generates a new random image in every build. FROM alpine:3.15.11 RUN dd if=/dev/urandom of=random bs=10 count=1 -
Dockerfile을 Git에 추가하고, 커밋한 뒤 GitLab 리포지터리로 푸시합니다.git add Dockerfile git commit -m "add dockerfile" git push사용자 이름과 개인 액세스 토큰을 입력하라는 메시지가 표시됩니다.
이 Dockerfile은 빌드마다 새로운 임의의 이미지를 생성하며, 테스트 목적으로만 사용합니다.
Google Compute Engine에서 지속적 통합(CI) 러너 활성화하기#
GitLab Runner는 GitLab CI/CD와 함께 동작하며 파이프라인에서 job을 실행하는 애플리케이션입니다. GitLab on Google Cloud 통합은 Compute Engine에서 오토스케일링되는 러너 플릿을 설정하는 작업을 지원하며, 러너 매니저가 임시 러너를 생성해 여러 job을 동시에 실행합니다.
오토스케일링되는 러너 플릿을 설정하려면 Google Cloud에서 CI/CD job을 실행하도록 GitLab Runner 설정하기의 안내를 따릅니다. 러너가 CI/CD job을 실행할 환경으로 Google Cloud를 선택하고, 나머지 설정 세부 정보를 입력합니다.
러너에 대한 세부 정보를 입력한 뒤에는 설정 안내에 따라 Google Cloud 프로젝트를 구성하고, GitLab Runner를 설치 및 등록하며, 작업 환경에서 제공된 terraform을 적용해 구성을 반영할 수 있습니다.
파이프라인 만들기#
Docker 이미지를 빌드하고, GitLab 컨테이너 레지스트리로 푸시한 뒤, 이미지를 Google Artifact Registry로 복사하는 파이프라인을 만듭니다.
-
GitLab 프로젝트에서
.gitlab-ci.yml파일을 만듭니다. -
이미지를 빌드하고, GitLab 컨테이너 레지스트리로 푸시한 뒤, Google Artifact Registry로 복사하는 파이프라인을 만들려면
.gitlab-ci.yml파일의 내용을 다음과 비슷하게 수정합니다.예시에서 다음 항목을 바꿉니다.
LOCATION: Google Artifact Registry 리포지터리를 만든 Google Cloud 리전입니다.PROJECT: 사용 중인 Google Cloud 프로젝트 ID입니다.REPOSITORY: Google Artifact Registry 리포지터리의 리포지터리 ID입니다.
stages: - build - deploy variables: GITLAB_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA build-sample-image: image: docker:24.0.5-cli stage: build services: - docker:24.0.5-dind before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY script: - docker build -t $GITLAB_IMAGE . - docker push $GITLAB_IMAGE include: - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@0.1.0 inputs: stage: deploy source: $GITLAB_IMAGE target: LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/image:v1.0.0
이 파이프라인은 Docker in Docker를 사용해 docker:24.0.5 이미지를 빌드하고 GitLab 컨테이너 레지스트리에 저장한 뒤,
Google Artifact Registry GitLab 컴포넌트를 사용해
버전 v1.0.0으로 Google Artifact Registry
리포지터리에 푸시합니다.
아티팩트 확인하기#
GitLab에서 아티팩트를 확인하려면 다음과 같이 합니다.
- GitLab 프로젝트의 왼쪽 사이드바에서 Build > Artifacts를 선택합니다.
- 아티팩트 이름을 선택해 빌드의 세부 정보를 확인합니다.
Google Artifact Registry에서 아티팩트를 확인하려면 다음과 같이 합니다.
- Google Cloud 콘솔에서 Repositories 페이지를 엽니다.
- 연결된 리포지터리 이름을 선택합니다.
- 이미지 이름을 선택해 버전 이름과 태그를 확인합니다.
- 이미지 버전 이름을 선택해 해당 버전의 빌드, 풀, 매니페스트 정보를 확인합니다.
정리하기#
이 페이지에서 사용한 리소스로 인해 Google Cloud 계정에 요금이 청구되지 않도록 하려면 Google Cloud 프로젝트를 삭제할 수 있습니다. 프로젝트를 유지하려면 Google Artifact Registry 리포지터리만 삭제할 수 있습니다.
GitLab 및 Google Artifact Registry의 요금과 프로젝트 관리에 대한 정보는 다음 리소스를 참고합니다.
Google Artifact Registry 리포지터리 삭제하기#
Google Cloud 프로젝트는 유지하면서 Google Artifact Registry 리포지터리 리소스만 삭제하려면 이 섹션의 단계를 따릅니다. Google Cloud 프로젝트 전체를 삭제하려면 프로젝트 삭제하기의 단계를 따릅니다.
리포지터리를 제거하기 전에, 유지하려는 이미지가 다른 위치에 있는지 확인합니다.
리포지터리를 삭제하려면 다음 명령을 실행합니다.
gcloud artifacts repositories delete REPOSITORY \
--location=LOCATION
다음 항목을 바꿉니다.
REPOSITORY를 Google Artifact Registry 리포지터리 ID로 바꿉니다.LOCATION을 리포지터리의 위치로 바꿉니다.
Google Cloud 프로젝트 삭제하기#
주의: 프로젝트를 삭제하면 다음과 같은 영향이 있습니다.
- 프로젝트에 있는 모든 항목이 삭제됩니다. 이 문서의 작업에 기존 프로젝트를 사용한 경우, 프로젝트를 삭제하면 해당 프로젝트에서 수행한 다른 작업도 함께 삭제됩니다.
- 사용자 지정 프로젝트 ID가 사라집니다. 이 프로젝트를 만들 때 앞으로 사용하고 싶은 사용자 지정 프로젝트 ID를 만들었을 수 있습니다. appspot.com URL과 같이 프로젝트 ID를 사용하는 URL을 유지하려면, 프로젝트 전체를 삭제하는 대신 프로젝트 내의 선택한 리소스만 삭제합니다.
Google Cloud에서 여러 아키텍처, 튜토리얼, 빠른 시작 튜토리얼을 살펴볼 계획이라면, 프로젝트를 재사용하는 것이 프로젝트 할당량 한도 초과를 방지하는 데 도움이 됩니다.
- Google Cloud 콘솔에서 Manage resources 페이지로 이동합니다.
- 프로젝트 목록에서 삭제하려는 프로젝트를 선택한 뒤 Delete를 선택합니다.
- 대화상자에서 프로젝트 ID를 입력한 뒤 Shut down을 선택해 프로젝트를 삭제합니다.
관련 주제#
- GitLab CI/CD 구성 파일 최적화하기에 대해 알아봅니다.
- GitLab on Google Cloud 통합이 워크로드 아이덴티티 페더레이션과 함께 IAM을 사용해 Google Cloud에 대한 액세스를 제어하는 방식은 IAM을 사용한 액세스 제어를 참고합니다.