在构建中提供动态变量
项目描述
buildout.variables
在构建中提供动态变量。
一个例子是唯一的数据库名称和在单机上无冲突的并行持续集成运行。
示例构建部分
[variables] recipe = buildout.variables index-file = ${env:HOME}/jenkins-buildout-index.json index-start = 0 index-key = ${env:JOB_NAME} portbase = indexed 12{index}00 port = int portbase 0:100 port-instance = new port jobname = str "${env:JOB_NAME}" [^a-zA-Z0-9] _ [env] recipe = gocept.recipe.env
这里有几个方面。
首先是 index- 选项。它们为您提供了基于键值获取唯一索引的可能性,并存储在共享文件中。这样,每个构建都会为每个使用的键值获得相同的索引。在上面的例子中,键是环境变量 JOB_NAME(例如由Jenkins设置)的索引,从0开始。如果运行一个具有不同 JOB_NAME 的构建,则它将获得下一个可用的索引。
portbase 选项评估 “12{index}00”。format(index=index)。因此,第一个工作将获得 12000,第二个工作将获得 12100,依此类推。
port 选项声明一个整数范围,可以用来获取用于所需内容的唯一端口。 port-instance 选项使用它来声明一个可以在构建过程中使用的端口,例如在本例中为 12000。如果您声明更多,则在上出错之前,最多可以有 12099 个端口。哪个变量获得哪个端口由变量名称的词法顺序确定。
jobname 选项使用 ${env:JOB_NAME} 并对其运行 re.sub。在本例中,除了字母和数字之外的所有内容都被替换为下划线。
除了整数范围之外,您不能使用同一部分中的其他动态变量。
致谢
感谢 Legacy Parts Corporation 和 http://enquos.com,为该软件包最初创建。
变更日志
0.3 - 2013-03-15
第一个官方版本。[fschulze]
0.2 - 未发布
修复持久索引。[fschulze]
0.1 - 未发布
初始版本。[fschulze (Florian Schulze)]