在构建中提供动态变量
buildout.variables的Python项目详细描述
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开始。如果运行具有不同作业名称的构建,则它将获得下一个空闲索引。
portbase选项计算“12{index}00”格式(index=index)。因此 第一份工作是12000,第二份工作是12100,以此类推。
port选项声明一系列整数,这些整数可用于获取所需的唯一端口。port-instance选项使用它来声明一个端口,该端口可在整个构建过程中与${variables:port instance}一起使用,在本例中为12000。如果您申报了更多,那么在出现错误之前最多可以申报12099个。哪个变量 通过变量名的词序来确定哪个端口。
jobname选项接受${env:job_name},并在其上运行re.sub。在本例中,除了字母和数字之外的所有内容都被下划线替换。
除整数范围外,不能使用同一节中的其他动态变量。
学分
感谢legacy parts corporation和http://enquos.com最初为其创建此包。
更改日志
0.3-2013年3月15日
- 首次正式发布。 [fschulze]
0.2-未发布
- 修复持久索引。 [fschulze]
0.1-未发布
- 初始版本。 [弗斯丘尔泽(弗洛里安·舒尔泽)]