CircleCI에서 CloudRun으로 자동 배포

6517 단어 5CircleCIgcpCloudRun
이 기사는 CircleCI를 사용하여 Google Cloud Platform(GCP)의 서비스인 CloudRun에 시스템을 배포하는 방법을 요약한 것입니다.

CircleCI를 사용하면 github에 push한 소스 코드를 자동으로 테스트, 빌드, 배포할 수 있습니다.
덧붙여 이 기사내에서는, github와 CircleCI의 제휴 방법이나 CircleCI의 이용 방법에 대해서는 생략하고 있습니다.

포인트



· CircleCI의 CloudRun용 Orbs 사용
· GCP에 연결하기 위한 연결 정보를 환경 변수로 설정

구성



전체 이미지는 이런 느낌.



GitHub의 구성은 이런 느낌.
언어는 Go1.13입니다.

github
/.circleci
  |-config.yml
/sample-app
  |-Dockerfile
  |-main.go
  |-... (他アプリソース群)

절차


  • CircleCI 작업 설정 (구성 파일 생성)
  • CircleCI에서 ContainerRegistry, ClourRun에 연결하기위한 환경 변수 설정
  • github에 대한 소스 코드 푸시

  • CircleCI 작업 설정



    CircleCI의 작업 설정은 위와 같이 github 저장소에 config.yml을 추가하기 만하면됩니다.
    CircleCI에서 CloudRun으로 배포하기 위한 Orbs가 제공되므로 이를 활용합니다.
    이번에는 관리형 CloudRun에 배포할 수 있습니다.

    그건 그렇고, Orbs는 소위 라이브러리와 같으며 다른 yml 파일을 가져옵니다.
    스스로 쓰는 것이 어려운 부분을 사용하기 쉽게 제공해 줍니다.

    아래의 설정은 github에 push 된 소스 코드를 테스트, 빌드, 배포하는 설정입니다.

    config.yml
    version: 2.1 # use CircleCI 2.1
    
    orbs:
        gcp-cloud-run: circleci/[email protected]
    
    executors:
        build:
            docker:
                - image: circleci/golang:1.13 #
    
    jobs:
        # テスト時はgo1.13のdockerイメージを使ってgo testを実行
        test-job:
            executor:
                name: build
            steps:
                - checkout
                - run:
                    name: Run unit tests
                    command: | 
                        cd sample-app
                        go test -v ./...
        # デプロイ時はContainerRegistoryにビルドしたイメージを保管し、CloudRunへのデプロイを実行
        # リポジトリのDockerfileに従ってビルドされる
        # プロジェクトID test-project-hogehogeは変更する
        deploy-job:
            docker:
                - image: 'cimg/base:stable'
            steps:
                - checkout
                - run:
                    command: cd sample-app
                - gcp-cloud-run/init
                - gcp-cloud-run/build:
                    source: ./sample-app
                    tag: 'asia.gcr.io/test-project-hogehoge/sample-app:${CIRCLE_SHA1}'
                - gcp-cloud-run/deploy:
                    image: 'asia.gcr.io/test-project-hogehoge/sample-app:${CIRCLE_SHA1}'
                    platform: managed
                    region: asia-northeast1
                    service-name: sample-app
                    unauthenticated: true
    
    #テスト用ジョブ(テストのみ)とデプロイ用ジョブ(ビルド、デプロイ)に分けて実行
    workflows:
        test-and-deploy:
            jobs:
                - test-job
                - deploy-job
    

    CircleCI 환경 설정



    CircleCI에서 GCP로 연결하려면 서비스 계정 정보가 필요합니다.
    그러므로 액세스 권한을 가진 서비스 계정(의 JSON 키)을 GCP에서 생성해 두십시오.
    ※ 잘 모르면 CloudBuild와 CloudRun의 관리자 권한을 부여하면 권한상은 괜찮습니다.

    CircleCI에서는 아래를 환경 변수로 설정하여 GCP에 연결할 수 있습니다.
    · GCLOUD_SERVICE_KEY
    · GOOGLE_PROJECT_ID
    · GOOGLE_COMPUTE_ZONE

    이들을 아래와 같이 CircleCI 프로젝트 설정 화면에서 설정하면 OK


    ※GCLOUD_SERVICE_KEY에는 JSON 키를 그대로 넣습니다.

    CloudRun 설정



    CloudRun 측에서는 특별히 설정이 필요하지 않습니다.
    CircleCI가 완료되면 자동으로 배포됩니다.

    CircleCI 실행



    github에 소스 코드를 push하고 CircleCI를 실행해보십시오.
    CircleCI에서 테스트를 실행하여 빌드한 컨테이너 이미지가 CloudRun에 배포될 때까지 자동으로 구현할 수 있습니다.

    참고



    h tps : // / rc ぇ시. 코 m / rbs / 레기 스트리 / 오 rb / 시 rc ぇ시 / gcp ぉ 우 드 룬
    h tps : // / rc ぇ시. 코 m / 드 cs / 그럼 / 2.0 / 오 g ぇ- 맞는 th /

    좋은 웹페이지 즐겨찾기