2015-05-13 27 views

回答

0

閱讀AppEngine SDK文檔,聽起來像是一個很好的方法。在CircleCI上沒有內置的方法。

2

我解決這個問題是這樣的:

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文件。

+0

對於非Java語言,您可以使用'appcfg.py更新。 --oauth2_refresh_token ='''。通過交互式oauth2流後,可以在'〜/ .appcfg_oauth2_tokens'中找到該令牌。 –

0

我解決了它在最新的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似乎不會顯示爲選項,但它在那裏,並且確實有效。