AWS Opsworks:如何为应用程序部署特定的 git 标签?

AWS Opsworks : How to deploy a particular git tag for an App?

AWS Opsworks 可让您部署应用程序。部署好像总是部署master分支。

如何让它部署 git 标签?

谢谢

你检查了吗?您可以查看 Branch/Revision section 它显示了如何根据分支 http://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-simple-app.html

进行部署

这个没有优雅的解决办法。遗憾的是 OpsWorks 不允许您在部署时指定 branch/tag。

编辑: 在对 OpsWorks/Chef/Ruby 进行一些挖掘之后,您实际上可以相对简单地部署特定标签。以下两种方法中的任何一种都仍然有效。

您可以通过以下方式之一部署 git 标签:

方法一:在应用设置中指定

  1. 在部署之前,编辑您的应用程序,并将 Branch/Revision 值更改为 tags/1.2.3 其中 1.2.3 是您要部署的标签.
  2. 保存更改,然后正常部署您的应用程序。
  3. 记得在每次部署时手动更改它!

方法 2:在部署操作中传递自定义 JSON

在部署应用程序时包含以下自定义 JSON

{"deploy": {"myapp": {"scm": {"revision": "tags/1.2.3"}}}}

其中 myapp 是您应用的 简称 1.2.3 是您要部署的标签。不要忘记每次都包含此自定义 JSON,否则您的部署将默认为您在 App:Branch/Revision.

中的任何内容

进一步思考

对于 build/test 中的应用程序,您可以在应用程序设置中将 develop 指定为您的 Branch/Revision,而不必担心每次都使用自定义 JSON。这将始终为您部署 develop 的头部。

对于生产中的应用程序,您可以将 master 作为 Branch/Revision,然后在部署时指定自定义 JSON。这样,如果您忘记包含自定义 JSON,至少它会部署来自 master 的最新版本,大部分时间应该与您的最新标签相同。

值得注意的是,如果您向层添加新实例(手动或根据层规则自动),默认行为是根据 App 中的设置部署应用的新版本: Branch/Revision...所以实际上,您需要根据您的具体要求注意这两种方法。

实际上我现在正在处理同样的问题。我们正在将我们的测试/暂存环境转移到 OpsWorks 中,以利用其基于时间的实例来节省成本。

我采用的解决方法是一个小的命令行 ruby 脚本来轮询 AWS 以显示堆栈列表,然后我可以 select 我想要的层、应用程序和实例部署到。然后,该脚本会询问要部署的存储库的分支名称,并通过 AWS CLI 将部署推送到 OpsWorks 进行处理。

这一切都是通过 AWS CLI 完成的。如果老板清楚,我会考虑将其在线提供,post link。