aoemedia / envsettingstool
环境设置工具
Requires
- php: >=5.3.2
- mustangostang/spyc: 0.6.*
This package is not auto-updated.
Last update: 2022-09-12 16:24:31 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 个参数。下一列代表环境的值,可以使用“DEFAULT”键作为默认设置。空列值将回退到“DEFAULT”列(而不是设置空值)。如果想要设置空值,则将单元格配置为 --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: 范围 ('default', 'stores', 'websites', 或 '%')
-
参数2: 范围 ID(商店 ID、商店代码、网站 ID、网站代码,0 为默认范围或 '%')
-
参数3: 路径
-
特殊功能
- 如果当前环境的行值字段为
--delete--
,则匹配的行将被删除 - param1、param2 或 param3 可以使用通配符
%
代替具体值。这将使 EnvSettingsTool 将值应用于多个现有行。 - 如果范围是
stores
,范围 ID 可以是商店代码而不是商店 ID。 - 如果范围是
website
,范围 ID 可以是网站代码而不是网站 ID。
- 如果当前环境的行值字段为
-
-
Est_Handler_MarkerReplace: 简单地替换文件中的给定标记
- 参数1: 文件的相对路径(相对于当前目录)
- 参数2: 将被替换的标记
- 参数3: 未使用
-
Est_Handler_AddFileContent: 将一个文件的内容添加到另一个文件的内容中
- 参数1:目标文件路径
- 参数2:'before'、'after'、'prepend' 或 'append'
- 参数3: 未使用
- 值:内容文件路径
-
Est_Handler_PrependFileContent: 将一个文件的内容添加到另一个文件的内容中(这是AddFileContent处理器的快捷方式)
- 参数1:目标文件路径
- 参数2:未使用
- 参数3: 未使用
- 值:内容文件路径
-
Est_Handler_SetVar: 允许您设置变量,这些变量可以在后续的所有处理器中使用
###VAR:<variableName>###
- 参数1:变量名
- 参数2:未使用
- 参数3: 未使用
-
Est_Handler_CopyFile: 允许您将文件从源文件路径复制到目标文件路径。
- 参数1:目标文件路径
- 参数2:未使用
- 参数3: 未使用
- 值:源文件路径
-
Est_Handler_Magento_EavEntityStore: 设置预定义的增量前缀。最后一个增量ID将设置为00000000。
- 参数1:实体类型代码或实体类型ID
- 参数2:商店代码或商店ID
- 参数3:增量前缀
-
Est_Handler_Magento_AdminUserActivate: 允许根据用户名、电子邮件或角色(支持通配符)启用/禁用管理员用户账户
- 参数1:用户名
- 参数2:电子邮件
- 参数3:角色名
- 值:1=启用,0=禁用
-
Est_Handler_Magento_StoreActivate: 启用/禁用现有商店
- 参数1:商店ID或代码
- 参数2:未使用
- 参数3: 未使用
- 值:0为禁用,1为启用
-
Est_Handler_Magento_Api2AclRule: 配置Mage_Api2规则
- 参数1:角色ID或角色名称
- 参数2:资源ID
- 参数3:权限
- 值:0/--delete-- 为删除,1/--insert-- 为插入
-
Est_Handler_Magento_Api2AclAttribute: 配置Mage_Api2属性
- 参数1:用户类型(admin、customer 或 guest - 全小写!)
- 参数2:资源ID
- 参数3:操作
- 值:允许的属性
-
Est_Handler_Akeneo_BatchJobInstanceData: 在Akeneo实例中更改akeneo_batch_job_instance表中的值。它从app/config/parameters.yml中读取其数据库参数,因此它需要在调整数据库凭据后放置。
-
参数1:作业代码('csv_products_export'、'magento_attributes_export'等)
-
参数2:键(要替换的序列化配置值的键)
-
参数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###
将被替换为当前环境名称(例如“生产”)。此替换是在解决对其他环境的任何引用之后完成的。因此,这里插入的环境始终是实际请求的环境,而不是引用值的那个。###CWD###
将被替换为当前工作目录的路径。###PARAM1###
将被替换为给定的 param1。如果参数以循环语法{{..|..}}
提供的,则也会工作。然后将为单个值设置。###PARAM2###
将被替换为给定的 param2。如果参数以循环语法{{..|..}}
提供的,则也会工作。然后将为单个值设置。###PARAM3###
将被替换为给定的 param3。如果参数以循环语法{{..|..}}
提供的,则也会工作。然后将为单个值设置。
忽略错误
如果处理程序名称以 @
前缀开头,则此错误将被忽略,并且应用命令将继续遍历列表。
组
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 管理员用户的支持