Maven在谷歌应用引擎上自动部署

时间:2015-09-22 14:44:57

标签: java maven google-app-engine

我知道要部署到app-engine上,你可以运行maven命令:

mvn appengine:update

然后提示输入验证码并启动浏览器以确认您要发布到应用引擎上。我正在寻求完全自动化,所以它可以作为maven的命令运行。我有appengine-maven-plugin设置,但似乎没有任何功能可以跳过手动步骤。

有没有人设法解决这个问题?我知道你可以直接从Jenkins部署,但我们正在寻找一种可以自动化的解决方案,如果我们的Jenkins服务器停机

由于

1 个答案:

答案 0 :(得分:1)

将您重定向到浏览器以进行登录和同意的身份验证流程是三脚Oauth呼叫,因为它涉及三个步骤:1)请求令牌2)登录和同意3)使用令牌进行API调用。

不涉及用户登录和同意的身份验证流程称为双腿Oauth(服务器到服务器):1)请求令牌,使用私钥签名2)使用令牌进行API调用。服务器到服务器身份验证要求您设置具有适当权限(范围)的服务帐户。您还必须安全地分发该服务帐户的私钥,以便您可以签署您的请求。请参阅OAuth2ServiceAccount instructions

Bitnami Jenkins图像实际上对您来说非常有用。设置Push-to-Deploy时,您将使用gcloud启动实例。该启动命令使用--scopes参数指定您希望图像也可以访问的范围,包括"https://www.googleapis.com/auth/appengine.admin"。这些范围的权限将提供给默认项目服务帐户。当Jenkins部署您的代码时,服务帐户凭据可通过Jenkins Google Oauth插件获得。

您可以构建另一个以编程方式推送代码的工具。您需要创建一个生成JSON Web令牌(JWT)的服务帐户再次查看Outh2ServiceAccount指令。 JWT是您的私人凭证,您需要找到一个安全的地方来存储它。 App Engine SDK知道如何使用JWT获取身份验证令牌。

在运行时,您可以将路径作为--service_account_json_key_file参数传递给JWT文件到appcfg.py。要通过Maven插件检测该参数,您必须使用-DadditionalParams =“ - service_account_json_key_file”,该文件位于github.com/GoogleCloudPlatform/appengine-maven-plugin/master的提示下。 (将在App Engine版本1.9.27中,但在此之前你可以从Github获取。)