CircleCI appengine documentation建議使用密碼進行部署。我如何使用oauth2流而不是使用密碼?我不想分享我的Google密碼。從CircleCI到AppEngine的無密碼連續部署
從CircleCI中存儲爲環境變量的標記數據生成~/.appcfg_oauth2_tokens_java
文件嗎?有一種更簡單的方法嗎?
CircleCI appengine documentation建議使用密碼進行部署。我如何使用oauth2流而不是使用密碼?我不想分享我的Google密碼。從CircleCI到AppEngine的無密碼連續部署
從CircleCI中存儲爲環境變量的標記數據生成~/.appcfg_oauth2_tokens_java
文件嗎?有一種更簡單的方法嗎?
閱讀AppEngine SDK文檔,聽起來像是一個很好的方法。在CircleCI上沒有內置的方法。
我解決這個問題是這樣的:
deployment:
appengine:
branch: master
commands:
- erb .appcfg_oauth2_tokens_java.json > ~/.appcfg_oauth2_tokens_java # requires ENV in circle ci
- mvn -DskipTests=true appengine:update # tests have already been run
.appcfg_oauth2_tokens_java.json:
{
"credentials": {
"ubuntu": {
"access_token": "<%= ENV["GOOGLE_ACCESS_TOKEN"] %>",
"expiration_time_millis": 1431552739090,
"refresh_token": "<%= ENV["GOOGLE_REFRESH_TOKEN"] %>"
}
}
}
然後在CircleCI,配置ENV變量的兩個標記。我通過本地運行mvn appengine:update
並通過oAuth2舞蹈獲得了令牌。注意:您可能必須先刪除現有的~/.appcfg_oauth2_tokens_java
文件。
對於非Java語言,您可以使用'appcfg.py更新。 --oauth2_refresh_token ='
如果你不希望使用任何與用戶相關的證書,您可以利用服務帳戶,想在這篇博客文章中提到: Continuous Deployment with Google App Engine and CircleCI
這不會幫助任何人使用Java ... –
你試過了嗎?因爲它不是語言特定的。 – analogue
我解決了它在最新的SDK GAE這34年9月1日的方式對於Java。
假設你有一個Base64編碼的環境變量與您在GCloud項目創建一個服務帳戶,您的JSON關鍵:
dependencies:
pre:
- echo $GOOGLE_CLIENT_SECRET | base64 --decode > ${HOME}/client-secret.json
然後在部署部分:
- $HOME/appengine-java-sdk-$APP_ENGINE_VERSION/bin/appcfg.sh -A $GCLOUD_PROJECT -M $GCLOUD_MODULE -V $BUILD_VERSION --service_account_json_key_file=$HOME/client-secret.json update $WAR_FOLDER
當您使用appcfg.sh幫助時,--service_account_json_key_file似乎不會顯示爲選項,但它在那裏,並且確實有效。
也有應用程序密碼,你可以產生當你有2個步驟驗證啓用我相信。 – Faisal