1

我有一个示例 Web 应用程序,我用它来试验 Spinnaker,特别是从源代码 (github) 到生产 (GCE)。

一般来说,这是应该作为图像烘焙的东西(包括适用的依赖项)吗?如果是这样,怎么做?由于文档和可用的 UI 选项仅涵盖 deb 包。

如果这不应该被烘焙,我将如何将它和依赖项部署到 QA VM?我应该使用脚本从源中提取和安装它们吗?

4

1 回答 1

6

一个典型的场景是使用像 jenkins 这样的 CI 系统构建您的源代码并生成/发布一个 deb,并让该 deb 声明其依赖项。

根据您使用的构建系统,有很多用于生成 deb 的选项。许多人使用 gradle 和一个名为 nebula ( https://nebula-plugins.github.io/ ) 的 Netflix OSS 插件。

这里有一个综合教程(http://www.spinnaker.io/docs/from-source-to-prod),它展示了如何: - 从 git repo 中的源代码开始并使用 jenkins 构建/发布 deb(到local aptly repo) - 触发 spinnaker pipeline,烘焙新镜像,并部署到测试集群 - 执行一些手动判断 - 在测试集群中找到刚刚验证的镜像并将其提升到 prod 集群

虽然该 Codelab 中的概念大多是通用的,但它确实依赖于罐装 GCE 映像来让您在没有配置的情况下启动并运行。正如您提到您在 GCE 上运行的那样,这对您来说应该很有效。

请注意,您当然可以采用其他烘焙/部署策略(有些人在启动时依赖配置管理系统),但是构建一个 deb 并将其烘焙成图像似乎最适合您描述的场景。

如果您真正想要的只是将您的 web 应用程序克隆到新烘焙的图像中,您可以通过创建自定义打包程序模板来做到这一点。打包程序模板都位于此目录中(https://github.com/spinnaker/rosco/tree/master/rosco-web/config/packer),您可以使用(https://github.com/spinnaker/rosco/ blob/master/rosco-web/config/packer/gce.json)作为起点。

然后更改此行 ( https://github.com/spinnaker/rosco/blob/master/rosco-web/config/packer/gce.json#L33 ) 以调用您自己的 shell 脚本。您的 shell 脚本可以克隆它需要的任何 repo,并根据您的喜好构建/测试。由于我们依赖于 packer,您还可以在此处使用任何 packer 的其他支持的供应商。

最后一步是在 Bake Stage 配置 ui 中指定新的自定义打包程序模板,以及它需要的任何参数(如果有):在此处输入图像描述

于 2016-06-02T11:19:53.943 回答