- 시작하기 전에
- GitLab 리포지토리 클론하기
- Dockerfile 만들기
- Google Compute Engine에서 지속적인 통합(CI) 러너 활성화하기
- 파이프라인 생성
- 아티팩트 보기
- 정리
- 관련 주제
튜토리얼: GitLab 파이프라인을 만들어 Google Artifact Registry에 푸시하기
GitLab을 Google Cloud에 연결하고 Compute Engine의 러너를 사용하여 이미지를 Artifact Registry에 푸시하는 GitLab 파이프라인을 만드는 방법에 대해 알아보세요.
시작하기 전에
-
이 페이지의 명령을 실행하려면 다음 개발 환경 중 하나에서
gcloud
CLI를 설정하세요: -
Google Cloud 프로젝트를 생성하거나 선택하세요.
주의: 이 절차에서 생성하는 리소스를 유지할 계획이 없다면 기존 프로젝트를 선택하는 대신 새 Google Cloud 프로젝트를 생성하세요. 이 단계를 마친 후, 프로젝트를 삭제하여 프로젝트와 연결된 모든 리소스를 제거할 수 있습니다.
Google Cloud 프로젝트를 생성하려면 다음 명령을 실행하세요:
gcloud projects create PROJECT_ID
생성하는 Google Cloud 프로젝트의 이름으로
PROJECT_ID
를 바꿉니다. -
생성한 Google Cloud 프로젝트를 선택하세요:
gcloud config set project PROJECT_ID
자신의 Google Cloud 프로젝트 이름으로
PROJECT_ID
를 대체하세요. -
Compute Engine 및 Artifact Registry API를 활성화하세요:
gcloud services enable compute.googleapis.com artifactregistry.googleapis.com
-
GitLab on Google Cloud 통합을 설정하려면 Google Cloud Workload Identity Federation 및 IAM 정책에서 지침을 따르세요.
-
GitLab 프로젝트에서 Google Artifact Registry 레지스트리를 설정하는 방법의 지침을 따라 Artifact Registry 리포지토리를 GitLab 프로젝트에 연결하세요.
GitLab 리포지토리 클론하기
-
SSH 또는 HTTPS를 사용하여 작업 환경에 GitLab 리포지토리를 클론하려면 로컬 컴퓨터에 Git 리포지토리 클론하기의 지침을 따르세요.
-
로컬 셸에서 작업 중인 경우, Terraform을 설치하세요. Cloud Shell에는 이미 Terraform이 설치되어 있습니다.
Dockerfile 만들기
- 클론한 리포지토리에서
Dockerfile
이라는 새 파일을 만듭니다. -
다음 내용을
Dockerfile
에 복사하여 붙여넣습니다.# 테스트 목적으로 작성된 Dockerfile. 매 빌드마다 새로운 랜덤 이미지를 생성합니다. 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와 함께 작동하여 파이프라인에서 작업을 실행하는 애플리케이션입니다. GitLab on Google Cloud 통합은 Compute Engine에서 러너의 자동 확장 플릿을 설정하는 데 도움을 주며, 임시 러너를 생성하여 동시에 여러 작업을 실행할 수 있게 해줍니다.
자동 확장 러너 플릿을 설정하려면 Google Cloud에서 CI/CD 작업을 실행하기 위해 GitLab Runner 설정의 지침을 따르십시오. Google Cloud를 CI/CD 작업을 실행할 환경으로 선택하고 나머지 구성 세부정보를 입력하세요.
러너에 대한 세부정보를 입력한 후, 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 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 구성 요소를 사용하여
Google Artifact Registry 리포지토리에 버전 v1.0.0
으로 푸시합니다.
아티팩트 보기
GitLab에서 아티팩트를 보려면:
- GitLab 프로젝트의 왼쪽 사이드바에서 Build > Artifacts를 선택합니다.
- 아티팩트의 이름을 선택하여 빌드 세부정보를 확인합니다.
Google Artifact Registry에서 아티팩트를 보려면:
- Google Cloud 콘솔에서 Repositories 페이지를 엽니다.
- 연결된 리포지토리의 이름을 선택합니다.
- 이미지의 이름을 선택하여 버전 이름과 태그를 봅니다.
- 이미지 버전의 이름을 선택하여 버전의 빌드, 풀 및 매니페스트 정보를 봅니다.
정리
이 페이지에서 사용된 리소스에 대한 요금이 발생하지 않도록 하려면 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를 생성했을 수 있습니다. 프로젝트 ID를 사용하는 URL(예: appspot.com URL)을 보존하려면 전체 프로젝트를 삭제하는 대신 프로젝트 내에서 선택된 리소스를 삭제하세요.
여러 아키텍처, 튜토리얼 또는 Google Cloud의 빠른 시작 튜토리얼을 탐색할 계획이라면 프로젝트를 재사용하면 프로젝트 쿼타 한도를 초과하는 것을 방지하는 데 도움이 될 수 있습니다.
-
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
-
프로젝트 목록에서 삭제하려는 프로젝트를 선택한 다음 삭제를 선택합니다.
-
대화 상자에서 프로젝트 ID를 입력한 다음 종료를 선택하여 프로젝트를 삭제합니다.
관련 주제
- GitLab CI/CD 구성 파일 최적화하는 방법을 알아보세요.
- IAM을 사용한 접근 제어에서 GitLab과 Google Cloud 통합이 워크로드 아이덴티티 페더레이션을 사용하여 Google Cloud에 대한 접근을 제어하는 방법에 대해 읽어보세요.