aoemedia/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 个参数。下一列代表环境的值,可以使用“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 管理员用户的支持