GitLab CI에서 Google App Engine 프로젝트 자동 배포
전제
gcloud app deploy
명령을 사용한 수동 배포는 이미 수행 중입니다 즉, "서비스 계정"과 "프로젝트 ID"가 있습니다.
개인 키 만들기
Google Cloud Platform 메뉴 'IAM 및 관리' → '서비스 계정'
이번 대상 서비스 계정 설정에서 '키 만들기'를 선택합니다.
JSON 형식으로 작성합니다.
만들기를 클릭하면 JSON 파일 다운로드가 시작됩니다.
이 파일을 GitLab 설정에서 사용합니다.
설정 후이 JSON 파일을 영구적으로 삭제하십시오.
GitLab 설정
CI/CD Secret Variables 설정
App Engine 프로젝트의 '프로젝트 ID'와 이전에 검색한 '개인 키'를 변수로 정의합니다.
GitLab의 "Settings"→ "CI/CD"→ "Secret variables"의 "Expand"
다음 내용의 변수를 정의합니다.
키
Value
PROJECT_ID_PRODUCTION
프로젝트 ID
DEPLOY_KEY_FILE_PRODUCTION
비밀키
개인 키 = 방금 검색한 JSON 파일의 모든 내용
GitLab Runner 구축
공식 문서 에 써 있는 대로 실행해 갑니다.
CI/CD Secret Variables 설정
App Engine 프로젝트의 '프로젝트 ID'와 이전에 검색한 '개인 키'를 변수로 정의합니다.
GitLab의 "Settings"→ "CI/CD"→ "Secret variables"의 "Expand"
다음 내용의 변수를 정의합니다.
키
Value
PROJECT_ID_PRODUCTION
프로젝트 ID
DEPLOY_KEY_FILE_PRODUCTION
비밀키
개인 키 = 방금 검색한 JSON 파일의 모든 내용
GitLab Runner 구축
공식 문서 에 써 있는 대로 실행해 갑니다.
바이너리 다운로드
$ sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
실행 권한 부여
$ sudo chmod +x /usr/local/bin/gitlab-runner
Runner 등록
여기도 공식 문서 을 참고로 진행합니다.
다음 명령 실행
$ gitlab-runner register
GitLab 인스턴스의 URL 입력
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
토큰 입력
Please enter the gitlab-ci token for this runner
xxx
xxx
에 실제 토큰을 입력합니다. GitLab Setting
-> CI/CD
에서 확인할 수 있습니다. (이미지의 검은 색 부분)Runner 호스트 이름 입력
Please enter the gitlab-ci description for this runner
[hostame] my-runner
뭐든지 좋지만 여기에
my-runner
를 입력하십시오.Runner와 연결할 태그 입력
Please enter the gitlab-ci tags for this runner (comma separated):
여기에 태그를 지정하지 않습니다. 아무것도 입력하지 않고 Enter.
Runner를 현재 프로젝트에 잠그거나 선택
Whether to lock Runner to current project [true/false]:
[true]: true
우선
true
.Runner executor 입력
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell
shell
를 선택합니다.Runner 설치 및 실행
$ cd ~
$ gitlab-runner install
$ gitlab-runner start
여기서 일단 Runner가 움직이고 있는지 확인해 봅시다.
$ gitlab-runner status
gitlab-runner: Service is running!
문제가 없으면
gitlab-runner: Service is running!
로 출력되어야합니다..gitlab-ci.yml 만들기
다음과 같이 .gitlab-ci.yml
를 작성합니다.
.gitlab-ci.ymlstages:
- deploy
before_script:
- bundle install
deploy:
stage: deploy
script:
- echo "deb http://packages.cloud.google.com/apt cloud-sdk-jessie main" | tee /etc/apt/sources.list.d/google-cloud-sdk.list
- curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
- apt-get update && apt-get install google-cloud-sdk --yes
- echo $DEPLOY_KEY_FILE_PRODUCTION > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
- gcloud --quiet --project $PROJECT_ID_PRODUCTION app deploy
- rm /tmp/$CI_PIPELINE_ID.json
only:
- master
이제 변경 사항이 master
에 반영될 때마다 App Engine에 자동으로 배포됩니다.
참고
An easy guide to automatically deploy your Google App Engine project with Gitlab CI
Reference
이 문제에 관하여(GitLab CI에서 Google App Engine 프로젝트 자동 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otuhs_d/items/bbf1699c53d24d2c0625
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
stages:
- deploy
before_script:
- bundle install
deploy:
stage: deploy
script:
- echo "deb http://packages.cloud.google.com/apt cloud-sdk-jessie main" | tee /etc/apt/sources.list.d/google-cloud-sdk.list
- curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
- apt-get update && apt-get install google-cloud-sdk --yes
- echo $DEPLOY_KEY_FILE_PRODUCTION > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
- gcloud --quiet --project $PROJECT_ID_PRODUCTION app deploy
- rm /tmp/$CI_PIPELINE_ID.json
only:
- master
An easy guide to automatically deploy your Google App Engine project with Gitlab CI
Reference
이 문제에 관하여(GitLab CI에서 Google App Engine 프로젝트 자동 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otuhs_d/items/bbf1699c53d24d2c0625텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)