【问题标题】:Maven automated deploy on google app engine谷歌应用引擎上的 Maven 自动部署
【发布时间】:2015-09-22 14:44:56
【问题描述】:

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

mvn appengine:update

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

有没有人设法解决这个问题?我知道您可以直接从 Jenkins 进行部署,但我们正在寻找一种解决方案,如果我们的 Jenkins 服务器出现故障,可以实现自动化

谢谢

【问题讨论】:

    标签: java maven google-app-engine


    【解决方案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 来获取身份验证令牌。

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

    【讨论】:

    • 这很有用,但我想问是否有办法使整个过程最初自动化?
    • 通过手动步骤获得 OAuth 令牌后,您只需使用 mvn appengine:update 即可进行部署。但是你不能自动离开授权。您必须进行一些设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多