CircleCI로 이미지를 빌드하고 GCR로 푸시

TL;DR


  • "저장소 관리자"의 권한이있는 서비스 계정 만들기 (필요한 경우 권한을 좁히십시오)
  • CircleCI 환경 변수에 서비스 계정 키 설정
  • .circleci/config.yaml 에서 이런 느낌을 한다
  • $ echo $GCP_SERVICE_KEY | gcloud auth activate-service-account --key-file -
    $ gcloud auth configure-docker --quiet
    $ # このへんでDockerイメージのビルドをする
    $ docker push ${GCR_REPO}:${CIRCLE_SHA1}
    

    구체적인 .circleci/config.yml 설정 예는 나중에 설명합니다.

    서비스 계정 만들기



    GCP 콘솔에서 IAM의 서비스 계정을 열고 서비스 계정 만들기를 누릅니다.



    서비스 계정 이름을 입력하고 만들기 버튼을 누릅니다. 「서비스 계정 ID」와 「서비스 계정의 설명」은 기호로 부디.



    액세스 제어 구성  |  Container Registry  |  Google Cloud 에 의하면 「스토리지 관리자」의 권한을 붙이면 좋다고 합니다.



    그런 다음 '키 만들기' 버튼을 눌러 json 액세스 키를 다운로드합니다. 이 파일은 공개하지 않도록 합시다.





    CircleCI 환경 변수 설정



    CircleCI의 프로젝트 설정에서 Environment Variables를 열고 Add Variable 버튼을 누릅니다.



    이번에는 환경 변수의 이름을 GCP_SERVICE_KEY로 했습니다. Value에 방금 다운로드 한 json 파일의 내용을 복사합니다.



    CircleCI 설정 파일 작성



    주의점



    CircleCI는 여러 Docker 버전을 지원하며 기본값은 17.03.0-ce입니다.
    Docker 명령을 실행하는 단계 - CircleCI



    경고: Docker 인증 도우미는 버전 18.03 이상에서만 사용하십시오. 이전 버전의 Docker 클라이언트 버그로 인해 인증 도우미가 구성되면 docker build의 성능이 크게 저하됩니다.
    인증 방법  |  Container Registry  |  Google Cloud

    CircleCI에서 기본 버전의 Docker를 사용하면 docker build 성능이 저하 될 수 있으므로 명시 적으로 새 Docker 버전을 지정합시다.

    설정 예



    다음은 설정의 jobs 부분입니다.

    circleci/config.yml
    jobs:
      build:
        docker:
          - image: google/cloud-sdk:264.0.0
            enviromnent:
              GCR_REPO: ${gcr_repository_name}
        steps:
          - checkout
          - setup_remote_docker:
              docker_layer_caching: true
              version: 18.06.0-ce
          - run:
              name: Authenticate gcloud to push the image
              command: |
                echo $GCP_SERVICE_KEY | gcloud auth activate-service-account --key-file -
                gcloud auth configure-docker --quiet
          - run:
              name: Build the image
              command: |
                docker build -t ${GCR_REPO}:${CIRCLE_SHA1} .
          - run:
              name: Push the image
              command: |
                docker push ${GCR_REPO}:${CIRCLE_SHA1}
    

    좋은 웹페이지 즐겨찾기