GAE/Go (+ dep)를 gcloud 명령없이 CI에 배포
gcloud app deploy 명령 사용dep를 사용하면 gcloud deploy 할 수 없습니까?
그러나 GAE/Go 조합에서 dep을 사용하면 다음과 같은 오류로 배포하지 못했습니다.
Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [9] Deployment contains files that cannot be compiled: Compile failed:
2018/01/28 01:49:22 go-app-builder: Failed parsing input: package "path/to/project/vendor/google.golang.org/appengine/urlfetch" cannot import internal package "google.golang.org/appengine/internal/urlfetch"
이미 이 오류는 다음 기사에서 다루었습니다.
불행히도 아직 수정되지 않은 것 같습니다.
그래서, 이 문제의 이슈 에 올라 있던 「오래된
goapp 를 사용하는 방법」을 시험해 보겠습니다.goapp deploy 명령 사용
다음 페이지에서
goapp 명령이 포함된 이전 sdk를 설치할 수 있습니다.설치가 완료되면 보통
goapp deploy 명령을 치면됩니다.$ goapp deploy -application <PROJECT_ID> -version <VERSION> path/to/app.yaml
이제 배포에 성공! 해결! …라고 생각했지만 CI에서 자동 배포하려고 할 때 문제가 발생했습니다.
goapp 명령은 gcloud 명령의 인증 토큰을 읽지 않으므로 인증을 통과하지 못하고 CI에서 자동 배포 할 수 없다는 것이 었습니다.CI의 출력을 보면, "브라우저를 열고 인증해라"라는 메시지로 완전히 정지되어 버렸습니다.
$ gcloud auth activate-service-account --key-file path/to/secret.json
$ goapp deploy -application *** -version master
Activated service account credentials for: [***@***.iam.gserviceaccount.com]
Updated property [core/project].
08:47 AM Host: appengine.google.com
08:47 AM Application: *** (was: None); version: master (was: None)
08:47 AM Starting update of app: ***, version: master
08:47 AM Getting current resource limits.
Your browser has been opened to visit:
https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+https%3A%2F%2Fwww.googleapis.com%2Fauth......
If your browser is on a different machine then exit and re-run this
application with the command-line parameter
--noauth_local_webserver
Too long with no output (exceeded 10m0s)
appcfg.py update 명령 사용
goapp 명령에는 인증 토큰을 명령으로 설정하는 옵션이 없으므로 goapp가 내부적으로 호출하는 appcfg.py 명령을 사용합니다.이 명령은 인증 토큰을 직접 지정할 수 있는 옵션
--oauth2_access_token 가 있으므로 거기에 gcloud auth print-access-token 를 사용하여 gcloud 명령 측에서 인증한 토큰을 가져오는 방법입니다.$ appcfg.py update --application=<PROJECT_ID> --version=<VERSION> --oauth2_access_token=$(gcloud auth print-access-token 2> /dev/null) path/to/app.yaml
이것으로 무사히 CI로부터의 배포에 성공했습니다! (⌒▽⌒)

$ appcfg.py update --application=*** --version=master --oauth2_access_token=$(gcloud auth print-access-token 2> /dev/null) path/to/app.yaml
Activated service account credentials for: [***@***.iam.gserviceaccount.com]
Updated property [core/project].
09:35 AM Host: appengine.google.com
09:35 AM Application: *** (was: None); version: master (was: None)
09:35 AM Starting update of app: ***, version: master
...
09:35 AM Starting deployment.
09:35 AM Checking if deployment succeeded.
09:35 AM Deployment successful.
09:35 AM Checking if updated app version is serving.
09:36 AM Completed update of app: ***, version: master
Reference
이 문제에 관하여(GAE/Go (+ dep)를 gcloud 명령없이 CI에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/castaneai/items/d8453d4297282f172e96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)