CircleCI에서 Service Account를 사용하여 GAE/go에 배포
5688 단어 5CircleCIGAEGoogleAppEngine
CircleCI의 문서에는 Google App Engine에 배포하는 방법이 작성되었지만
Google 비밀번호를 입력하게 되었기 때문에 별로 기분이 좋지 않아서
어떻게든 ServiceAccount에서 Deploy 할 수 없는지 모색했습니다.
환경
Mac os x
gae go sdk: 1.9.24
ServiceAccount 만들기
GCP Console로 이동하여 프로젝트를 열고 메뉴에서
[API Manager]->[자격 증명]에서 [자격 증명 만들기] 버튼을 눌러 Service Account를 만듭니다.
작성할 때 키를 내보내라는 메시지가 표시됩니다.
JSON에서 다운로드합니다.
키 파일 암호화 및 해독을 위한 스크립트 준비
Git에서 관리할 때 키 파일을 리포지토리에 포함하는 경우에는 일단 암호화를 해 둡시다.
Travis라고하면이 편은 명령으로 간단하게 할 수 있어 즐겼습니다만
커맨드 라인 툴은 공식적으로 지원되지 않으므로 스스로 혼잡하게 준비했습니다.
사용법은 현재 디렉토리 바로 아래에 있는 .secret 디렉토리의 파일을 암호화합니다.
# 暗号化したいファイルの作成
echo "チョココロネ" > .secret/important_confidential_documents
# 暗号化
$ SECURE_KEY=hogehoge script/encrypt
# .secret/important_confidential_documents.enc ができている
# 復号化
$ SECURE_KEY=hogehoge script/decrypt
gitignore에서 .enc 만 버전 제어에 포함되도록 설정하십시오.
CircleCI에서 SECURE_KEY라는 이름으로 적절한 길이의 임의의 문자열을 넣습니다.
프로젝트와 circle.yml 만들기
시험 정도라면 적당한 데모 앱으로 프로젝트를 만들어주세요.
그리고 circle.yml을 만듭니다.
circle.ymlmachine:
timezone:
Asia/Tokyo
environment:
ACCOUNT: [email protected]
GAE_GO_SDK_VERSION: 1.9.24
dependencies:
pre:
- curl -o $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-${GAE_GO_SDK_VERSION}.zip
- unzip -q -d $HOME $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip
test:
override:
- $HOME/go_appengine/goapp build
- $HOME/go_appengine/goapp test -v ./...
deployment:
appengine:
branch: master
commands:
- script/decrypt
- gcloud auth activate-service-account $ACCOUNT --key-file ./.secret/key.json
- gcloud preview app deploy --set-default --version=1
Demo 앱이라면 이것으로 Deploy까지 할 수 있습니다.
gcloud 명령의 AppEngine은 아직 미리보기 버전에서 의존성을 해결하지 못했습니다.
즉 외부 프레임워크나 패키지를 사용하고 있었을 경우 gcloud preview app deploy --set-default --version=1
에서는 deploy 할 수 없습니다
그래서 appcfg.py
를 사용합니다.
이번에는 appcfg.py
는 서비스 계정을 그대로 로드하고 사용할 수 없으므로 서비스 계정에서 AccessToken을 가져옵니다.
gcloud에 계정이 설정되어 있으면 다음 명령으로 토큰을 얻을 수 있습니다.
$ gcloud auth print-access-token
나중에 circle.yml을 수정하겠습니다.
circle.ymlmachine:
timezone:
Asia/Tokyo
environment:
GAE_GO_SDK_VERSION: 1.9.24
PATH: $PATH:$HOME/go_appengine
dependencies:
pre:
- curl -o $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-${GAE_GO_SDK_VERSION}.zip
- unzip -q -d $HOME $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip
test:
override:
- goapp build
- goapp test -v ./...
deployment:
appengine:
branch: master
commands:
- script/decrypt
- gcloud auth activate-service-account $ACCOUNT --key-file ./.secret/key.json
- appcfg.py update --oauth2_access_token $(gcloud auth print-access-token 2> /dev/null) .
자동으로 배포할 수 있습니다.
Reference
이 문제에 관하여(CircleCI에서 Service Account를 사용하여 GAE/go에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koki_cheese/items/ee25795bcd85ef72889c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
GCP Console로 이동하여 프로젝트를 열고 메뉴에서
[API Manager]->[자격 증명]에서 [자격 증명 만들기] 버튼을 눌러 Service Account를 만듭니다.
작성할 때 키를 내보내라는 메시지가 표시됩니다.
JSON에서 다운로드합니다.
키 파일 암호화 및 해독을 위한 스크립트 준비
Git에서 관리할 때 키 파일을 리포지토리에 포함하는 경우에는 일단 암호화를 해 둡시다.
Travis라고하면이 편은 명령으로 간단하게 할 수 있어 즐겼습니다만
커맨드 라인 툴은 공식적으로 지원되지 않으므로 스스로 혼잡하게 준비했습니다.
사용법은 현재 디렉토리 바로 아래에 있는 .secret 디렉토리의 파일을 암호화합니다.
# 暗号化したいファイルの作成
echo "チョココロネ" > .secret/important_confidential_documents
# 暗号化
$ SECURE_KEY=hogehoge script/encrypt
# .secret/important_confidential_documents.enc ができている
# 復号化
$ SECURE_KEY=hogehoge script/decrypt
gitignore에서 .enc 만 버전 제어에 포함되도록 설정하십시오.
CircleCI에서 SECURE_KEY라는 이름으로 적절한 길이의 임의의 문자열을 넣습니다.
프로젝트와 circle.yml 만들기
시험 정도라면 적당한 데모 앱으로 프로젝트를 만들어주세요.
그리고 circle.yml을 만듭니다.
circle.ymlmachine:
timezone:
Asia/Tokyo
environment:
ACCOUNT: [email protected]
GAE_GO_SDK_VERSION: 1.9.24
dependencies:
pre:
- curl -o $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-${GAE_GO_SDK_VERSION}.zip
- unzip -q -d $HOME $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip
test:
override:
- $HOME/go_appengine/goapp build
- $HOME/go_appengine/goapp test -v ./...
deployment:
appengine:
branch: master
commands:
- script/decrypt
- gcloud auth activate-service-account $ACCOUNT --key-file ./.secret/key.json
- gcloud preview app deploy --set-default --version=1
Demo 앱이라면 이것으로 Deploy까지 할 수 있습니다.
gcloud 명령의 AppEngine은 아직 미리보기 버전에서 의존성을 해결하지 못했습니다.
즉 외부 프레임워크나 패키지를 사용하고 있었을 경우 gcloud preview app deploy --set-default --version=1
에서는 deploy 할 수 없습니다
그래서 appcfg.py
를 사용합니다.
이번에는 appcfg.py
는 서비스 계정을 그대로 로드하고 사용할 수 없으므로 서비스 계정에서 AccessToken을 가져옵니다.
gcloud에 계정이 설정되어 있으면 다음 명령으로 토큰을 얻을 수 있습니다.
$ gcloud auth print-access-token
나중에 circle.yml을 수정하겠습니다.
circle.ymlmachine:
timezone:
Asia/Tokyo
environment:
GAE_GO_SDK_VERSION: 1.9.24
PATH: $PATH:$HOME/go_appengine
dependencies:
pre:
- curl -o $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-${GAE_GO_SDK_VERSION}.zip
- unzip -q -d $HOME $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip
test:
override:
- goapp build
- goapp test -v ./...
deployment:
appengine:
branch: master
commands:
- script/decrypt
- gcloud auth activate-service-account $ACCOUNT --key-file ./.secret/key.json
- appcfg.py update --oauth2_access_token $(gcloud auth print-access-token 2> /dev/null) .
자동으로 배포할 수 있습니다.
Reference
이 문제에 관하여(CircleCI에서 Service Account를 사용하여 GAE/go에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koki_cheese/items/ee25795bcd85ef72889c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# 暗号化したいファイルの作成
echo "チョココロネ" > .secret/important_confidential_documents
# 暗号化
$ SECURE_KEY=hogehoge script/encrypt
# .secret/important_confidential_documents.enc ができている
# 復号化
$ SECURE_KEY=hogehoge script/decrypt
시험 정도라면 적당한 데모 앱으로 프로젝트를 만들어주세요.
그리고 circle.yml을 만듭니다.
circle.yml
machine:
timezone:
Asia/Tokyo
environment:
ACCOUNT: [email protected]
GAE_GO_SDK_VERSION: 1.9.24
dependencies:
pre:
- curl -o $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-${GAE_GO_SDK_VERSION}.zip
- unzip -q -d $HOME $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip
test:
override:
- $HOME/go_appengine/goapp build
- $HOME/go_appengine/goapp test -v ./...
deployment:
appengine:
branch: master
commands:
- script/decrypt
- gcloud auth activate-service-account $ACCOUNT --key-file ./.secret/key.json
- gcloud preview app deploy --set-default --version=1
Demo 앱이라면 이것으로 Deploy까지 할 수 있습니다.
gcloud 명령의 AppEngine은 아직 미리보기 버전에서 의존성을 해결하지 못했습니다.
즉 외부 프레임워크나 패키지를 사용하고 있었을 경우
gcloud preview app deploy --set-default --version=1
에서는 deploy 할 수 없습니다그래서
appcfg.py
를 사용합니다.이번에는
appcfg.py
는 서비스 계정을 그대로 로드하고 사용할 수 없으므로 서비스 계정에서 AccessToken을 가져옵니다.gcloud에 계정이 설정되어 있으면 다음 명령으로 토큰을 얻을 수 있습니다.
$ gcloud auth print-access-token
나중에 circle.yml을 수정하겠습니다.
circle.yml
machine:
timezone:
Asia/Tokyo
environment:
GAE_GO_SDK_VERSION: 1.9.24
PATH: $PATH:$HOME/go_appengine
dependencies:
pre:
- curl -o $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-${GAE_GO_SDK_VERSION}.zip
- unzip -q -d $HOME $HOME/go_appengine_${GAE_GO_SDK_VERSION}.zip
test:
override:
- goapp build
- goapp test -v ./...
deployment:
appengine:
branch: master
commands:
- script/decrypt
- gcloud auth activate-service-account $ACCOUNT --key-file ./.secret/key.json
- appcfg.py update --oauth2_access_token $(gcloud auth print-access-token 2> /dev/null) .
자동으로 배포할 수 있습니다.
Reference
이 문제에 관하여(CircleCI에서 Service Account를 사용하여 GAE/go에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koki_cheese/items/ee25795bcd85ef72889c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)