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 标签:
方法一:在应用设置中指定
- 在部署之前,编辑您的应用程序,并将 Branch/Revision 值更改为
tags/1.2.3
其中 1.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。
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 标签:
方法一:在应用设置中指定
- 在部署之前,编辑您的应用程序,并将 Branch/Revision 值更改为
tags/1.2.3
其中1.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。