aoepeople / envsettingstool
环境设置工具
Requires
- php: >=5.3.2
- mustangostang/spyc: 0.6.*
This package is not auto-updated.
Last update: 2022-09-12 16:30:24 UTC
README
作者: Fabrizio Branca
EnvSettingsTool提供了一种调整应用程序设置的概念。通常在部署期间使用。每个环境的设置都可以保存在CSV文件中。
CSV文件
这是一个示例CSV文件
处理器 | 参数1 | 参数2 | 参数3 | 默认值 | devbox | 集成 | 预发布 | 生产 |
---|---|---|---|---|---|---|---|---|
# 数据库参数 | ||||||||
Est_Handler_XmlFile | app/etc/local.xml | /config/global/resources/default_setup/connection/host | localhost | |||||
# 开发设置 | ||||||||
Est_Handler_Magento_CoreConfigData | 默认 | 0 | dev/debug/profiler | 0 | 1 |
每一行代表一个设置。通过“处理器”更改设置,每个处理器支持最多3个参数。下一列代表环境的值,您可以使用“默认”键来设置默认设置。空列值将回退到“默认”列(而不是设置空值)。如果您想设置空值,则将单元格配置为--empty--
,它将设置空值而不是回退。
用法
该工具包含3个命令
试运行
仅打印将要执行的处理器和值
php dryRun.php devbox ../settings.csv
应用
执行处理器并显示状态摘要
php apply.php devbox ../settings.csv
获取单个值
返回特定处理器的值。例如,这可以用于获取其他脚本的数据库值
php value.php devbox ../Settings.csv HandlerName param1 param2 param3
示例
DB_HOST=`EnvSettingsTool/value.php ${ENVIRONMENT} settings.csv Est_Handler_XmlFile app/etc/local.xml /config/global/resources/default_setup/connection/host`
示例设置脚本片段
echo "Appling settings"
cd htdocs
php ../Setup/EnvSettingsTool/apply.php ${ENVIRONMENT} ../Setup/Settings.csv || exit 1
处理器
-
Est_Handler_XmlFile: 可以更改XML中的值
- 参数1:XML文件的相对路径(相对于当前目录)
- 参数2:XPath
- 参数3:未使用
-
Est_Handler_Magento_CoreConfigData: 修改Magento实例中core_config_data表的值。它从app/etc/local.xml读取其数据库参数,因此它需要在调整数据库凭据之后放置。
-
参数1:范围('默认'、'stores'、'websites'或'%')
-
参数2:范围ID(商店ID、商店代码、网站ID、网站代码,0表示默认范围或'%')
-
参数3:路径
-
特殊功能
- 如果当前环境的行中的值字段为
--delete--
,则将删除匹配的行 - param1、param2或param3可以使用通配符
%
代替具体值。这将使EnvSettingsTool将值应用于多个现有行。 - 如果范围是
stores
,范围ID可以是商店代码而不是商店ID。 - 如果范围是
website
,范围ID可以是网站代码而不是网站ID。
- 如果当前环境的行中的值字段为
-
-
Est_Handler_MarkerReplace: 简单地替换文件中的给定标记
- Param1: 文件的相对路径(相对于当前目录)
- Param2: 将被替换的标记
- 参数3:未使用
-
Est_Handler_AddFileContent:将一个文件的内容添加到另一个文件的内容中
- Param1:目标文件路径
- Param2:'before', 'after', 'prepend', 或 'append'
- 参数3:未使用
- Value:内容文件路径
-
Est_Handler_PrependFileContent:将一个文件的内容添加到另一个文件的内容中(这是AddFileContent处理程序的快捷方式)
- Param1:目标文件路径
- Param2:未使用
- 参数3:未使用
- Value:内容文件路径
-
Est_Handler_SetVar:允许您设置可以在所有后续处理程序中使用的变量,使用
###VAR:
### - Param1:变量名
- Param2:未使用
- 参数3:未使用
-
Est_Handler_CopyFile:允许您从源文件路径复制文件到目标文件路径。
- Param1:目标文件路径
- Param2:未使用
- 参数3:未使用
- Value:源文件路径
-
Est_Handler_Magento_EavEntityStore:设置预定义的增量前缀。最后增量ID将被设置为00000000。
- Param1:实体类型代码或实体类型ID
- Param2:商店代码或商店ID
- Param3:增量前缀
-
Est_Handler_Magento_AdminUserActivate:允许根据用户名、电子邮件或角色(支持通配符)启用/禁用管理员用户账户
- Param1:用户名
- Param2:电子邮件
- Param3:角色名
- Value:1=启用,0=禁用
-
Est_Handler_Magento_StoreActivate:启用/禁用现有商店
- Param1:商店ID或代码
- Param2:未使用
- 参数3:未使用
- Value:0为禁用,1为启用
-
Est_Handler_Magento_Api2AclRule:配置Mage_Api2规则
- Param1:角色ID或角色名称
- Param2:资源ID
- Param3:权限
- Value:0/--delete--为删除,1/--insert--为插入
-
Est_Handler_Magento_Api2AclAttribute:配置Mage_Api2属性
- Param1:用户类型(admin,customer 或 guest - 小写!)
- Param2:资源ID
- Param3:操作
- Value:allowed_attributes
-
Est_Handler_Akeneo_BatchJobInstanceData:在Akeneo实例中更改akeneo_batch_job_instance表中的值。它从app/config/parameters.yml中读取其数据库参数,因此它需要在调整数据库凭证后放置。
-
Param1:作业代码('csv_products_export', 'magento_attributes_export' 等)
-
Param2:键(要替换的序列化配置值的键)
-
参数3:未使用
-
特殊功能
- 如果当前环境的当前行的值字段为
--delete--
,则将删除匹配的导出作业
- 如果当前环境的当前行的值字段为
-
特殊功能
注释和空行
空行或以'#'或'/'开头的行将被忽略。使用此方法将注释插入csv文件中。
跳过行
如果当前环境的当前行的值字段为--skip--
,则此处理程序将不会执行
环境变量
值也支持特殊语法###ENV:VARIABLE###
来从(bash)环境变量中读取内容。
读取文件内容
特殊语法###FILE:filename###
允许读取文件内容并将其插入为修剪后的值。
示例
Est_Handler_XmlFile('app/etc/local.xml', '/config/global/cache/id_prefix', '') = x###FILE:../build.txt###_
将读取../build.txt的内容并将其插入id_prefix节点:x72_
循环
param1,param2和param3可以使用此语法指定循环:{{1|2|3}}
。在这种情况下,相同的处理程序将使用每个值多次执行。也有可能在两个或所有三个参数中都有循环。在这种情况下,将执行所有组合。
示例
Est_Handler_Magento_CoreConfigData('stores', '{{1|2|3}}', 'web/unsecure/base_url') = 'http://www.foo.com'
等于
Est_Handler_Magento_CoreConfigData('stores', '1', 'web/unsecure/base_url') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '2', 'web/unsecure/base_url') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '3', 'web/unsecure/base_url') = 'http://www.foo.com'
现在,此循环解析现在也可以在参数中工作
Est_Handler_Magento_CoreConfigData('stores', '1', 'a/b/{{c|d|e}}') = 'http://www.foo.com'
等于
Est_Handler_Magento_CoreConfigData('stores', '1', 'a/b/c') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'a/b/d') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'a/b/e') = 'http://www.foo.com'
同一参数内也支持多个循环
Est_Handler_Magento_CoreConfigData('stores', '1', '{{a|b}}_{{c|d}') = 'http://www.foo.com'
等于
Est_Handler_Magento_CoreConfigData('stores', '1', 'a_c') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'a_d') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'b_c') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'b_d') = 'http://www.foo.com'
循环中的空值也是允许的
Est_Handler_Magento_CoreConfigData('stores', '1', 'web/secure/base{{_skin|_media|_js|}}_url') = 'http://www.foo.com'
等于
Est_Handler_Magento_CoreConfigData('stores', '1', 'web/secure/base_skin_url') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'web/secure/base_media_url') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'web/secure/base_js_url') = 'http://www.foo.com'
Est_Handler_Magento_CoreConfigData('stores', '1', 'web/secure/base_url') = 'http://www.foo.com'
回退
空单元格将回退到配置的默认列。如果您确实需要该值为空,请使用 --empty--
代替。
对其他环境的引用
您可以通过添加此内容到值中来引用另一个环境中的值: ###REF:targetenvironment###
特殊标记
###ENVIRONMENT###
将被替换为当前环境名称(例如“production”)。此替换是在解析对其他环境的任何引用之后完成的。因此,此处插入的环境始终是实际请求的环境,而不是引用值的那个。###CWD###
将被替换为当前工作目录的路径。###PARAM1###
将被替换为给定的 param1。如果参数以循环语法{{..|..}}
提供的,则也会生效。然后设置单独的值。###PARAM2###
将被替换为给定的 param2。如果参数以循环语法{{..|..}}
提供的,则也会生效。然后设置单独的值。###PARAM3###
将被替换为给定的 param3。如果参数以循环语法{{..|..}}
提供的,则也会生效。然后设置单独的值。
忽略错误
如果处理程序名称以 @
开头,则此错误将被忽略,并继续执行 apply 命令列表。
组
csv 设置文件可以包含另一个标记为“GROUPS”(全部大写!)的列。此列中的每个值都可以是逗号分隔的组列表(或您喜欢的“标签”),类似于 PHPUnit 处理组的方式。
在调用 apply.php 脚本时,您可以通过 --groups <逗号分隔的组列表>
或 --exclude-groups <逗号分隔的组列表>
传递。如果设置 --groups
,则仅处理至少包含一个作为参数传递的组的行。如果设置 --exclude-groups
,则跳过具有至少一个与指定组相同的组的行。
请注意,该参数不支持 '=',只支持空格。(使用 --groups db
,而不是 --groups=db
)
示例
# Will only execute rows tagged with 'db'
./apply.php devbox ../Configuration/settings.csv --groups db
# Will skip executing rows tagged with 'db'
./apply.php devbox ../Configuration/settings.csv --exclude-groups db
技巧和窍门
管理员用户管理
禁用所有管理员用户
Est_Handler_Magento_AdminUserActivate('%', '%', '%') = 0
启用用户 'john.doe'
Est_Handler_Magento_AdminUserActivate('john.doe', '%', '%') = 1
启用电子邮件地址为 'info@example.com' 的用户
Est_Handler_Magento_AdminUserActivate('%', 'info@example.com', '%') = 1
启用所有电子邮件地址为 '...@example.com' 的用户
Est_Handler_Magento_AdminUserActivate('%', '%@example.com', '%') = 1
启用所有具有“客户服务”角色的用户
Est_Handler_Magento_AdminUserActivate('%', '%', 'Customer Service') = 1
请记住,EnvSettingsTool 按从上到下的顺序处理 csv 文件。您可以使用此功能精确控制哪些账户应该启用或禁用。
删除值
如果您正在设置 Magento core_config_data 值,并且想要确保没有其他值可能会干扰您的值(例如,在不同的作用域中),您可以首先删除所有值
处理器 | 参数1 | 参数2 | 参数3 | 默认值 |
---|---|---|---|---|
Est_Handler_Magento_CoreConfigData | % | % | dev/debug/profiler | --delete-- |
Est_Handler_Magento_CoreConfigData | 默认 | 0 | dev/debug/profiler | 0 |
通过 Composer 使用
将此内容添加到您的composer.json中,通过composer解决依赖问题
"repositories": [
{
"type": "vcs",
"url": "https://github.com/AOEpeople/EnvSettingsTool"
}
],
"require": {
"aoepeople/envsettingstool": "~1.0"
}
变更日志
版本 1.0.0
- 添加了composer支持
版本 1.1.0
- 添加了对参数的支持
- 添加了 --groups 和 --exclude-groups 功能
版本 1.2.0
- 添加了对Magento管理员用户的支持