构建系统
keas.build的Python项目详细描述
keas.build
轻松管理大型多包项目
keas.build是一个命令行工具,用于快速创建新的 为具有多个 相互依赖的软件包。例如,考虑一个web应用程序 这有助于你管理你的twitter追随者,称为twolo(简称 对于twitter追随者),您可能有几个不同的python包 它处理应用程序的不同方面:
- twolo.integration -用于管理与 Twitter
- twolo.web -twolo.integration的web前端 包装
- twolo.rest -用于处理 Twollo.集成
- twolo.utils -一个包含随机实用程序和 东西,
使用keas.build,您将能够管理这些 python包和任意数量的部署配置 连贯地。具体来说,keas.build将:
- 允许您定义一个项目,它是 相互依存的卵通常一起释放。
- 必要时自动创建每个包的新鸡蛋版本。
- 将新鸡蛋上传到私人鸡蛋库。
- 生成版本化的构建配置文件,这些文件将 鸡蛋放好。
- 将构建配置文件上载到专用配置服务器。
- 将依赖的构建配置文件上载到专用配置 服务器(通过检查extends=chain)
安装
安装keas.build的发布版本
您可以使用"简易安装"获得最新版本:
$ easy_install keas.build
安装keas.build的开发版本
签出代码:
$ svn checkout svn://svn.zope.org/repos/main/keas.build/trunk keas.build $ cd keas.build
运行引导脚本并构建:
$ python bootstrap.py $ ./bin/buildout
运行构建包脚本
安装完成后,您应该能够运行 构建包 脚本。(可在开发者的 /bin/build包中找到 安装):
$ build-package Usage: build-package [options] Options: -h, --help show this help message and exit -c FILE, --config-file=FILE The file containing the configuration of the project. -q, --quiet When specified, no messages are displayed. -v, --verbose When specified, debug information is created. -d, --use-defaults When specified, no user input is required and the defaults are used. -o, --offline-mode When set, no server commands are executed. -n, --next-version When set, the system guesses the next version to generate. -b BRANCH, --use-branch=BRANCH When specified, this branch will be always used. -i BRANCHES --independent-branches=BRANCH1 BRANCH2, When specified, the system guesses the next version from all this branches. --no-upload When set, the generated configuration files are not uploaded. --no-branch-update When set, the branch is not updated with a new version after a release is created.
入门
假设
首先,我们需要从keas.build的一些假设开始 包裹的摆放方式。在中开发多个包时 串联,你的subversion存储库通常是有意义的 就像这样:
SVNROOT/packages/ branches/ Twollo-0.x/ ... Twollo-1.x/ twollo.integration/ twollo.rest/ twollo.utils/ twollo.web/ tags/ twollo.integration-1.2/ twollo.integration-1.3/ twollo.web-1.7/ twollo.web-1.8/ twollo.web-1.9/ ... trunk/ twollo.integration/ twollo.rest/ twollo.utils/ twollo.web/
重要的是每个包都有 拥有分支/标签/主干/目录,但只有一个 整个"项目"的集合。
定义项目配置文件
在您真正使用构建包之前, 必须定义配置文件。项目配置文件 使用ini文件格式。每个项目配置文件 必须有一个 [build] 部分。的项目配置文件 Twollo应该是这样的:
# Twollo.cfg [build] name = Twollo #this has nothing to do with the twollo package namespace version = + template = Twollo-Release-Template.cfg package-index = https://build.twollo.com/eggs/ package-index-username = someuser package-index-password = somepass buildout-server = https://build.twollo.com/buildouts/ buildout-server-username = someuser buildout-server-password = somepass svn-repos = https://svn.twollo.com/svn/packages/ svn-repos-username = somesvnuser svn-repos-password = somepass packages = twollo.integration twollo.web twollo.rest twollo.utils
让我们检查一下 twolo.cfg
- 名称 -这是项目的名称。它可以是任何你 与构成 项目。该名称将作为生成构建的一部分 配置文件。
-
版本
-这是制作新版本时要使用的版本
的T他计划。版本号成为
生成的构建配置文件。
- 使用 + 作为版本只会增加版本 已存在的版本中的项目数 发布。
- 模板 -这是要用于的基本构建配置文件 所有部署。创建新的项目版本时, [版本] 部分将自动更新为 每个 twoollow.* 包的正确版本。更多关于 以后再说。
- 标记布局 -从 平面 或 子文件夹中选择
- flat 将在svn as/tags/package版本中创建标记 这是默认设置。
- 子文件夹 将在svn as/tags/package/version中创建标记
-
中选择
- webdav 将生成的构建文件上载到指定的url 使用WebDAV协议构建服务器 。
- 本地 只生成构建文件,不上载它们。 如果 构建服务器被给定,则构建文件将被复制到 文件夹。
- mypypi 将生成的构建文件上载到 构建服务器。url应该指向mypypi上传页面。 (类似于http://yourhost/++projects++/" rel="nofollow">http://yourhost/++projects++/)
定义发布模板
正如我们在上一节中看到的, twolo.cfg 引用一个文件 调用了Twollo release template.cfg。这只是一个基地建筑 配置。除此之外,我们还可以定义不同的配置 阶段和生产部分定义的数据。这样的部分可以在 作为附加(共享)变量的产品部署。对于Twollo项目, 可能是这样的:
# Twollo-Release-Template.cfg [buildout] extends = http://download.zope.org/zope3.4/3.4.0/versions.cfg parts = test find-links = https://build.twollo.com/eggs/ [test] recipe = zc.recipe.testrunner eggs = twollo.web twollo.integration twollo.utils twollo.rest [twollo-app] recipe = zc.zope3recipes:app servers = zserver site.zcml = <include package="twollo.web" file="app.zcml" /> eggs = twollo.web [zope3] location = [stage] memcached = 127.0.0.1:11211 [production] memcached = 10.0.0.1:11211
当Twollo项目的新版本发布时,a [版本] 节将添加到此配置文件中,其中包含 更正 twoollow.* 固定版本。
定义多个部署配置
每次发布项目时,您可能希望生成不同的 为所有不同的部署构建配置文件 你可能拥有的环境。例如,您可能有三个 不同的环境:开发、质量保证和生产。这些是 称为变体。每个环境都可能需要应用程序 在不同的端口上运行,在不同的日志级别上运行,或者有其他 差异。
我们可以通过添加 添加到 twolo.cfg 文件的部分:
# Twollo.cfg [Development] template = Twollo-Instance-Template.cfg vars = stage port = 9080 logdir = /opt/twollo/dev/logs install-dir = /opt/twollo/dev loglevel = debug cache-size = 1000 [QA] template = Twollo-Instance-Template.cfg vars = stage port = 9082 logdir = /opt/twollo/qa/logs install-dir = /opt/twollo/qa loglevel = info cache-size = 1000 [Production] template = Twollo-Instance-Template.cfg vars = production port = 8080 logdir = /var/log/twollo install-dir = /opt/twollo/ loglevel = warn cache-size = 200000
然后我们可以有一个单独的twolo instance template.cfg文件 使用python内置的字符串模板来访问 在 twolo.cfg 中设置。对于Twollo项目,可能如下所示:
# Twollo-Instance-Template.cfg [buildout] parts += twollo directory = %(install-dir)s [database] recipe = zc.recipe.filestorage [twollo] recipe = zc.zope3recipes:instance application = twollo-app zope.conf = <product-config memcached> memcached %(memcached)s </product-config> <zodb> cache-size %(cache-size)s <filestorage> path ${database:path} </filestorage> </zodb> <server> type WSGI-HTTP address %(port)s </server> <eventlog> level %(loglevel)s <logfile> formatter zope.exceptions.log.Formatter path %(logdir)s/twollo.log </logfile> </eventlog> <accesslog> <logfile> level info path %(logdir)s/twollo-access.log </logfile> </accesslog>
如您所见,twolo.cfg使用额外的vars(stage,production),其中 使在 发布模板并在实例模板中使用它们。注意,副作用 在python配置解析器中,您将继承 在通过(buildout)extends加载的模板中定义重复的节。
发布项目
一旦创建了所有必需的配置文件,就可以 发布你的第一个项目。这里是 构建包的位置 剧本开始播放了。第一次运行构建包时 脚本,您需要传入的唯一选项是配置 文件
构建包脚本将提示您输入版本信息 关于它将作为 Twollo.cfg项目。你与脚本的第一次交互可能看起来 像这样:
$ easy_install keas.build0
下次发布时,您可以设置 生成包以自动猜测下一个版本 被释放。它首先查找所有的发布标签 找到一个给定包的最后修改版本 一个给定的包。如果给定包的任何代码被更改 自从上次发行以来,它会撞到最轻微的 版本号自动。如果没有发生变化,它将 选择最新的现有版本。
您还可以使用 -d 标志使生成包不提示 在创建新版本之前。
如果您需要从特定分支创建新版本,可以 使用 -b选项。例如,如果对 Twollo-1.x分支,我们可以使用下面的代码创建一个新版本 像这样的分支:
$ easy_install keas.build1
计算新包版本时,将对其进行版本控制 沿着1.x线,即使您已经创建了2.x版本,通过 正在分析分支的名称。
在分支上使用 -n 和 -d 时应注意结束语 版本号是你需要有包的版本 与分支版本匹配。 例如,有一个分支: 分支/twolo-1.9 将假设包如下 twolow.web-1.9.x 和twolow.utils-1.9.x 等等。 当从主干释放包时,您也应该注意到这一点。 很有可能你会在主干上驱动开发,然后在 稳定的。在这种情况下,分支上的包版本应保持内联。
安装已发布的项目
keas.build还附带了一个非常简单的安装脚本 可用于快速安装已发布项目的任何变体:
$ easy_install keas.build2
例如,要安装最新的qa版本的twolo项目, 您可以运行:
< Buff行情> $install-u https://build.twolo.com/buildouts/ -p twolo-v qa–最新创建助手脚本
有时记住所有命令行 选项是生成项目时需要通过的选项。 幸运的是,很容易创建助手脚本 一些默认设置。
例如,要创建Build Twollo脚本,可以添加 以下是构建配置文件:
$ easy_install keas.build3
作为另一个例子,您可以创建一个install twolo dev脚本 自动安装最新的开发版本:
$ easy_install keas.build4
可能性是无穷的!
脚注
< COL/> < COL/> <正文> < > <表>[1] | 请参见http://en.wikipedia.org/wiki/ini_file" rel="nofollow">http://en.wikipedia.org/wiki/ini_file |
更改
0.4.1(2013-11-28)
- 错误修复:防止生成错误的构建选项键/值分隔符。生成 += 而不是用于构建部件选项的 += 。否则它 自BuildOut 2.0之后失败
0.4.0(2013-11-24)
功能:在部署模板部分实现了一个新的参数 vars 。这个 新的 vars 参数可用于定义发布模板部分。如果 定义后,生成过程将应用此部分中的所有参数,因为它们 将是项目部分的一部分。这允许继承一个 项目定义中的参数数量,而不是在 每个项目。这是有用的,如果你有一个阶段和许多生产变种 实例使用配置数据,就像数据库设置一样,您需要 分享它们。对于这样的用例,您可以简单地定义一个阶段和产品 部分并定义所有共享参数,并在 您的产品部署设置。参见index.txt中的memcached示例
注意,这个新产品部署模板的vars参数可能有问题 对于现有的设置,如果您使用的vars参数的值与 节模板中定义的节名称。
0.3.1(2013-09-25)
- 改进:添加了默认包版本 避免对新软件包提出交互式问题
0.3.0(2012-12-27)
- 特点:增加了-i-独立分支选项。此选项将强制 检查最后一个版本是否来自我们所在的同一个分支 从中释放。这是要求如果你开发新一代软件 在独立于树干的树枝上。以前版本的 keas.build,其中只能将分支版本作为错误修复版本处理 也不确定我们是否混合了主干和分支版本。现在用 i选项我们强制所有发布的包都将被生成或重用 基于当前主干或分支(-B trunk,branch)
- 为查找或跳过下一个版本添加了更多日志信息,这使得 看看发生了什么
0.2.2(2011-08-29)
- 改进:添加 当前日期时间 , 当前日期 , 当前时间 变量
0.2.1(2011-04-07)
- 修正rawconfigparser的用法,它通过使选项值 全部小写。
0.2.0(2011-04-06)
- 将版本提升到ZTK 1.1
- 改进:将svn repo信息添加到项目配置文件中。 是的,我知道这个可以随时检查,但是添加这个可以节省很多时间。
- 改进:添加选项hash配置文件
0.1.8(2010-05-11)
- 修正:不要用python setup.py注册
- 修复:bump setuptools和zc.buildout版本
- 修复:0.1.7 tar.gz已损坏
0.1.7(2010-04-26)
- 错误修复:依赖配置文件收集终止了版本pin 在主配置文件中
- 改进:检查包版本时支持类似pypi的简单索引
- 改进:检查相关配置,将所有配置上载到服务器。
- 改进:添加 --强制版本 选项。
- 改进:将版本添加到svn日志注释。使生活更轻松(至少 带乌龟vn)
- 改进:增加选项。
- 改进:将 --目录 选项添加到 安装
0.1.6(2009-11-2)
- 改进:在确定分支的发布版本时,支持 分支名称以.x结尾,如myproject-0.3.x中所示
0.1.5(2009-10-16)
- 改进:在安装时将用户名和密码添加到构建的url 获取.cfg文件的 希望BuildOut不会留下密码。
- 改进(?)或者修复:删除部署中使用的Twisted依赖项 对于SSH
- 改进:消除了对lxml的依赖。现在我们只用蟒蛇 内置XML库。
- 改进:增加了构建上传类型选项。 有关详细信息,请参见文档
- 错误修复:多行模板选项值在分析时崩溃
- 错误修复:re不喜欢来自beautifulsoup的非文本参数
- 改进:添加了要安装的 --超时选项
- 改进:增加了mypypi buildout文件上传支持
- 错误修复:恢复到签出完整的源代码树
0.1.4(2009-10-01)
- 错误修复:当-u选项缺少 尾随/
- 错误修复:没有找到变体时,安装程序脚本将崩溃。
- 改进:构建包将不再签出整个 分支只是用新版本更新setup.py文件 号码。只签出顶级目录。
- 错误修复:当变量 配置缺少其模板所需的信息。现在 将打印一条有用的错误消息,并且不会上载任何文件 直到所有文件都成功创建。
- 错误修复:在命令行上键入ctrl+c将不再导致 键盘中断要弹出的回溯。
- 错误修复:运行安装程序时,如果buildout命令提示 用户输入后,安装程序将不再占用提示。
0.1.3(2009-09-30)
- 首次公开发行。
0.1.1(内部)
- 错误修复:如果指定的项目变量没有版本 生成后,构建脚本现在可以很好地退出,并具有可读性 错误信息。
0.1.0(内部)
- 初始版本。
[2] | 请参见http://en.wikipedia.org/wiki/webdav" rel="nofollow">http://en.wikipedia.org/wiki/webdav |