CircleCI에서 CloudRun으로 자동 배포
CircleCI를 사용하면 github에 push한 소스 코드를 자동으로 테스트, 빌드, 배포할 수 있습니다.
덧붙여 이 기사내에서는, github와 CircleCI의 제휴 방법이나 CircleCI의 이용 방법에 대해서는 생략하고 있습니다.
포인트
· CircleCI의 CloudRun용 Orbs 사용
· GCP에 연결하기 위한 연결 정보를 환경 변수로 설정
구성
전체 이미지는 이런 느낌.
GitHub의 구성은 이런 느낌.
언어는 Go1.13입니다.
github/.circleci
|-config.yml
/sample-app
|-Dockerfile
|-main.go
|-... (他アプリソース群)
절차
/.circleci
|-config.yml
/sample-app
|-Dockerfile
|-main.go
|-... (他アプリソース群)
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 /
Reference
이 문제에 관하여(CircleCI에서 CloudRun으로 자동 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taku-yamamoto22/items/e873385e0b181188a4e1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)