튜토리얼: Google Artifact Registry에 푸시하는 GitLab 파이프라인 만들기
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 및 Artifact Registry API를 활성화합니다:
gcloud services enable compute.googleapis.com artifactregistry.googleapis.com -
Google Cloud Workload Identity Federation 및 IAM 정책의 지침을 따라 Google Cloud의 GitLab 통합을 설정합니다.
-
GitLab 프로젝트에서 Google Artifact Registry 설정의 지침을 따라 GitLab 프로젝트에 Artifact Registry 저장소를 연결합니다.
GitLab 저장소 복제#
- SSH 또는 HTTPS를 사용하여 GitLab 저장소를 작업 환경에 복제하려면 로컬 컴퓨터에 Git 저장소 복제의 지침을 따릅니다.
- 로컬 shell에서 작업하는 경우 Terraform을 설치합니다. Terraform은 Cloud Shell에 이미 설치되어 있습니다.
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와 함께 작동하는 애플리케이션입니다. Google Cloud의 GitLab 통합은 Compute Engine에서 자동 확장 러너 집합을 설정하는 데 도움을 주며, 여러 작업을 동시에 실행하기 위한 임시 러너를 만드는 러너 관리자가 있습니다.
자동 확장 러너 집합을 설정하려면 Google Cloud에서 CI/CD 작업을 실행하도록 GitLab Runner 설정의 지침을 따릅니다. CI/CD 작업을 실행할 환경으로 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을 통한 액세스 제어를 읽습니다.
