通过Jenkins部署Google App Engine

时间:2017-07-11 16:30:03

标签: maven google-app-engine jenkins

我正在尝试通过Jenkins服务器部署Java Google App Engine项目。我的想法是,在提交时我运行我的测试,如果全部通过,我将部署到我的Google项目。

我尝试了各种各样的东西,并与服务帐户json文件关系密切。我目前正在投放:mvn clean appengine:update -Dapplication-id=<app_id> -Dappengine.additionalParams=--service_account_json_key_file=<json_file>

我遇到的问题是收到错误:

  

您无权修改此应用(app_id = ...)

服务帐户具有Google App Engine部署权限,并添加了Google App Engine所有者,只是为了查看是否修复了任何内容,但事实并非如此。

以前,我尝试使用gcloud命令行工具在运行maven之前进行身份验证,但每次执行此操作时,我都会通过浏览器进行身份验证(这在CI环境中不起作用)。< / p>

是否有人能够从Jenkins构建并部署到Google App Engine?

1 个答案:

答案 0 :(得分:3)

TL; DR - 您的步骤和命令看起来合理且应该有效。您可能需要仔细检查以下内容:

  • 服务帐户至少分配了App Engine Deployer个角色。
  • Maven命令需要使用服务帐户json文件中的凭据(查看包含--service_account_json_key_file=的类似于此的日志行):

    [INFO] Retrieving Google App Engine Java SDK from Maven
    [INFO] Updating Google App Engine Application
    [INFO] Running -A PROJECT_NAME -V 100 --oauth2 --service_account_json_key_file=/path/to/service_account.json update /Users/tuxdude/google-cloud-examples/google-app-engine/java/helloworld-email/appengine/helloworld/target/appengine-helloworld-1.0-SNAPSHOT
    

对我有用的步骤

我只是尝试了这些步骤,它对我有用:

  1. IAM & Admin中的Google Cloud Console页面创建新的服务帐户。
  2. 仅授予“App Engine Deployer”角色。
  3. 选中Furnish a new private key复选框。选择密钥类型为json
  4. 保存json文件
  5. 运行以下maven命令以使用服务帐户凭据进行部署:

    mvn clean appengine:update -Dappengine.additionalParams=--service_account_json_key_file=path/to/service_account_key.json
    
  6. 如果您的路径中有任何可能破坏参数标记化的字符,则可以使用此版本:

        mvn clean appengine:update -Dappengine.additionalParams=--service_account_json_key_file="path/to/service_account_key.json"