用于管理heroku应用程序的命令行应用程序。

heroku_tools的Python项目详细描述


基于yunojuno使用的工作流,用于管理heroku应用程序的自以为是的工具,如this blog post所述。

https://travis-ci.org/yunojuno/heroku-tools.svg?branch=masterhttps://badge.fury.io/py/heroku-tools.svg

背景

我们(yunojuno)在过去三年中一直在将我们的应用程序部署到heroku,我们已经开发了一组fabric脚本来帮助我们完成这个过程。这个项目是从那项工作中提炼出来的。它包括cli应用程序,用于将应用程序部署到heroku并通过远程配置变量管理配置。

它是自定的,并强制执行特定的工作流,并且(当前)只能用于部署django应用程序。

工作流程

此应用程序支持的工作流基于gitflow,工作方式如下。

该项目有两个永久git分支-masterdev(根据gitflow),以及三个heroku环境:liveuatdev

dev分支部署到dev环境中,并在这里进行集成测试。在本地处理功能分支的开发人员在本地执行他们自己的测试,完成后,提交pull请求,以便将他们的分支合并回dev中。完成后,将推送dev。

当发布到期时,dev合并到master中,master分支被推送到uatlive环境中。两者之间的唯一区别是uat不是公共的,因此用于最终测试(例如用户接受测试)。这可能会映射到其他项目中的“预生产”或“暂存”。

(遵循此模型,代码在从devuatlive的环境中向上推送)。同时,数据通过环境从live向下迁移到uatdevuat环境是最新代码满足最新数据的地方,因此它被用于测试。此项目还将包含数据迁移和匿名脚本(一旦移植完毕)。

Heroku部署

将应用程序部署到heroku通常被描述为简单到单个git push,这在技术上是正确的。这将更新您的应用程序。然而,在现实世界的大多数情况下,这是完全不够的。

在大多数情况下,它看起来更像这样:

  1. 查看建议部署中的内容(git log
  2. 打开应用程序维护页
  3. 向上推代码
  4. 运行CollectStatic^ ^
  5. 运行部署后任务-例如:数据库迁移
  6. 关闭“维护”页
  7. 编写发行说明
  8. 通知其他人部署情况

这个项目封装了这些步骤。

^^ collectstatic将作为默认herkou django构建包的一部分自动运行,但是如果您将内容推送到cdn,这可能不是所需的行为,您可能希望在部署后显式运行collectstatic

$ heroku-tools deploy dev
$ heroku-tools deploy dev --branch feature/xxx

应用迁移的命令通过配置文件指定为后部署操作。与heroku tools<;0.3版本相比,这是一个变化

部署

update这个项目已经在雄心中缩减了规模-部署功能不再是通用的,而是专门为django编写的。

此项目包含一个deploy命令行应用程序,用于加强此工作流。它有很多选项(对于完整列表运行deploy --help),但默认情况下,它将强制执行上述工作流。开发环境将推送开发分支、uat将推送master等部署。它将对远程heroku repo运行diff,以确定将推送的提交(和更改的文件)列表,并由此推断是否运行迁移和全站仪。

工作流细节在应用程序/环境文件中配置:

application:# the name of the Heroku applicationname:live_app# the default branch to push to this applicationbranch:master# use the heroku pipeline:promote featurepipeline:True# the upstream application to promoteupstream:staging_app# add a tag to the commit using the release version from Herokuadd_tag:False# add a tag, and write a release note into the tag message (experimental)add_rich_tag:False# Heroku application environment settings managed by the conf commandsettings:DJANGO_DEBUG:TrueDJANGO_SECRET_KEY:foobarDJANGO_SETTINGS_MODULE:my_app.settingsDATABASE_URL:postgres://postgres:postres@heroku.com/my_app

配置

config命令行应用程序合并了我们的configuration management process。它从application.conf文件的设置块设置应用程序环境变量。在将设置应用于heroku应用程序之前,它将对本地文件中每个设置的当前值运行diff。它打印出diff,以便您可以看到将应用哪些设置,并提示用户在推送到heroku之前确认应该应用这些设置。

状态

正在开发中。请不要马上使用。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在安卓中为循环添加延迟,而不会暂停UI线程   java为什么接口没有一种方法要求实现类引用它们自己的类型?   ruby+appium或java+appium用于移动本机应用程序自动化   java我可以使用WeakHashMap而不是HashMap吗   java在字符串中查找常见的序列   java如何在不使用ArrayList的情况下从数组中删除对象?   java背景不会出现在添加的paintComponents()之后   java Swagger/OpenapiAnnotations:如何使用$ref生成allOf?   java如何使用AgendaCalendarView(开源)?   Java Crystal Report SDK报告和子报告   java如何制作包含构建编号的TeamCity工件?   java JMagick方法setGeometry of MontageInfo类崩溃JMV   java如何从wsdl创建独立应用程序?