프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형


Cloud Build

 

Cloud Build는 GCP에서 제공하는 Serverless CI/CD 서비스이다.

Cloud Build를 사용해서 Dockerfile로 docker image를 빌드하고,  GCP의 Image 저장소인 Artifact Registry에 업로드해자.

 

https://cloud.google.com/blog/ko/products/devops-sre/use-artifact-registry-and-container-scanning-to-streamline-deployments

 

 

 

 

Cloud Build와 Artifact Registry 서비스 추가

 

관리를 누른다.

 

 

 

 

 

 

Cloud Build로 Dockerfile 빌드하기

 

quickstart.sh 라는 간단한 echo 명령어를 사용하는 스크립트를 준비해 주자.

 

이 스크립트를 사용하는 Docker image를 빌드하자.

 

nano Dockerfile

 

FROM alpine                   # Alpine Linux 기본 이미지를 사용
COPY quickstart.sh /
CMD ["/quickstart.sh"]     #작성해 둔 shell 스크립트를 실행하도록 한다.

 

 

 

이후, 해당 스크립트를 실행할 수 있도록 실행 권한을 변경한다.

chmod +x quickstart.sh

 

 

 

Artifact repository 생성

 

특정 리전에 Artifact repository를 만들자. 

 

gcloud artifacts repositories create < repository 이름 > --repository-format=docker --location=<리전 ID> --description="설명"

 

 

 

 

 

Cloud Build로 Docker 이미지를 빌드

gcloud builds submit --tag <작업 리전>-docker.pkg.dev/${DEVSHELL_PROJECT_ID}/<레포지토리 이름>/<이미지명>:<태그>

submit의 대상이 되는 경로를 생성한 Artifact repository로 해주면, dockerfile을 통해 빌드한 내용이 해당 repository로 업로드된다.

 

 

repository를 확인하면 업로드가 정상적으로 되어 있다.

 

 

 

 

 

cloudbuild.yaml 파일로 컨테이너 빌드하기

 

이번에는 Cloud Build에서 사용하는 빌드 파일인 cloudbuild.yaml로 빌드 관련 명령어를 제시해 주자.

 

 

nano cloudbuild.yaml

 

steps:
- name: 'gcr.io/cloud-builders/docker'       #이 또한 dockerfile을 통해 빌드한다.
  args: [ 'build', '-t', '<리전명>-docker.pkg.dev/$PROJECT_ID/ <레포지토리 이름>/<이미지명>:<태그>', '.' ]
images:
- '<리전명>-docker.pkg.dev/$PROJECT_ID/ <레포지토리 이름>/<이미지명>:<태그>'

 

$PROJECT_ID는 Cloud Build가 연결된 프로젝트의 프로젝트 ID를 사용하여 자동으로 대체된다.

 

 

 

 

 

해당 파일을 config 옵션을 주어서 빌드를 시작해 주자.

 

gcloud builds submit --config cloudbuild.yaml

 

 

이제 새로운 빌드로 인해 두 가지 버전의 image가 확인된다.

 

 

 

빌드 기록에서도 확인된다.

 

cloudbuild.yaml과 같은 커스텀 빌드 구성 파일은 컨테이너의 이미지 빌드 이외에도 다른 작업들을 수행할 수 있게 해 준다.

예를 들면 빌드된 컨테이너를 테스트하거나, 쿠버네티에 배포할 수도 있다. 

 

좀 더 세부적인 Deploy를 조절하기 위해서 Cloud Deploy를 사용할 수 있다.

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함