aoepeople/envsettingstool

该包已被弃用,不再维护。未建议替代包。

环境设置工具

1.4.4 2017-01-26 14:55 UTC

README

Build Status

作者: 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

CSV file

每一行代表一个设置。通过“处理器”更改设置,每个处理器支持最多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管理员用户的支持