我正在尝试通过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?
答案 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
我只是尝试了这些步骤,它对我有用:
IAM & Admin
中的Google Cloud Console
页面创建新的服务帐户。Furnish a new private key
复选框。选择密钥类型为json
json
文件运行以下maven命令以使用服务帐户凭据进行部署:
mvn clean appengine:update -Dappengine.additionalParams=--service_account_json_key_file=path/to/service_account_key.json
如果您的路径中有任何可能破坏参数标记化的字符,则可以使用此版本:
mvn clean appengine:update -Dappengine.additionalParams=--service_account_json_key_file="path/to/service_account_key.json"