zyos/install-bundle

Symfony 的命令执行自动化流程

0.0.1 2023-09-30 01:11 UTC

This package is auto-updated.

Last update: 2024-09-30 01:27:15 UTC


README

此项目提供了一系列流程,可以帮助您系统化项目中的一些过程。

安装包提供了一系列可以配置的命令

  • 运行原生或自定义的 symfony 命令
  • 执行目录创建、符号链接和镜像
  • 运行服务器操作系统的命令(CLI)
  • 以自定义方式验证路径目录和文件

要求

PHP 版本 >= 8.0 & Symfony >=5.0

所有这些流程都使用 symfony 组件:Console、Filesystem 和 Process

安装

composer require zyos/install-bundle

如果您不使用 flex(您应该使用),则需要手动启用该包

// config/bundles.php
return [
	/** ... **/
	Zyos\InstallBundle\InstallBundle::class => ['all' => true],
];

必须在路径中创建配置文件

config/packages/zyos_install.yaml

设置

这些是您需要输入以正常运行的必要基本配置。

环境

不同 Install Bundle 命令可以执行的环境。

如果此参数未指定,则默认生成 "prod"。

这些环境不受 Symfony .env 文件的限制,在这种情况下,您可以创建自定义环境,并按您偏好的顺序运行它们。

zyos_install:
    environments: ['dev', 'prod', 'test']    

可以在某些环境中生成执行锁,在这种情况下将生成 lock.lock 文件,这将生成相应的锁,此锁仅在执行 zyos:install 命令时生成。

如果此参数未指定,则默认生成 "prod"。

zyos_install:
    locks: ['prod', 'staging']    

锁文件直接在 symfony 项目 src/Resources/zyos-install-bundle/lock.lock 中创建

您必须确保此目录已创建

安装

此命令仅执行和专属 symfony 命令,可以是自定义的或任何类型的 symfony 内部命令。

zyos_install:
    install:
        -   command: 'app:command'
            arguments: {'argument': 'hello world', '--option': true}
            enable: true
            environments: [ 'prod', 'dev' ]
            priority: 1
            if_error: 'stop'
  • command: (string) 要执行的命令。
  • arguments: (array) 包含键值对的数组,这些键值对对于命令是必要的。
  • enable: (boolean) 在执行时启用或禁用命令。
  • environments: (array) 命令将在其中执行的环境。
  • priority: (integer) 这是命令执行的优先级,(正值) 数字越高,优先级越低,(负数) 数字越高,优先级越高。
  • if_error: (enum:[none, stop]) 如果发生错误,此字段将限制命令的操作,命令(CLI)返回 3 个退出代码:成功:0,失败:1,无效:2。在这种情况下,错误情况下有两个值:1 和 2,命令可以停止,并且配置的后续命令不会执行,在这种情况下使用值:"stop",如果发生错误,但后续命令的执行过程没有停止,则使用值:"none"。

用法

php bin/console zyos:install
php bin/console zyos:install <environment>
php bin/console zyos:install dev
php bin/console zyos:install --show-output prod
Usage:
    zyos:install [options] [--] [<environment>]

Arguments:
    environment: Runtime environment [default: "dev"]

Options:
    --show-output: Show command output

文件系统

此命令使用 Filesystem 组件,您可以使用它创建目录、符号链接和镜像目录和文件,此过程用于创建项目结构。

zyos_install:
    filesystem:
        -   source: '%kernel.project_dir%/public/test'
            destination: '%kernel.project_dir%/public/test'
            environments: [ 'prod', 'dev' ]
            type: directory
            priority: 3
            if_error: 'stop'
  • source: (string) 目录和/或文件的源路径。
  • destination: (string) 目录和/或文件的目标路径。
  • environments: (array) 命令将在其中执行的环境。
  • type: (enum:[directory, symlink, mirror]) 创建类型。
  • priority: (integer) 这是命令执行的优先级,(正值) 数字越高,优先级越低,(负数) 数字越高,优先级越高。
  • if_error: (enum:[none, stop]) 如果发生错误,此字段将限制命令的操作,命令(CLI)返回 3 个退出代码:成功:0,失败:1,无效:2。在这种情况下,错误情况下有两个值:1 和 2,命令可以停止,并且配置的后续命令不会执行,在这种情况下使用值:"stop",如果发生错误,但后续命令的执行过程没有停止,则使用值:"none"。

注意:当类型为 "directory" 时,"source" 和 "destination" 必须相同,以避免创建问题。

用法

php bin/console zyos:filesystem
php bin/console zyos:filesystem <environment>
php bin/console zyos:filesystem dev # create directory, symlink and mirror
php bin/console zyos:filesystem --show-output prod
php bin/console zyos:filesystem --mirror prod # only mirror creation
php bin/console zyos:filesystem --symlink prod # only symlink creation
php bin/console zyos:filesystem --directory prod # only directory creation
php bin/console zyos:filesystem --mirror --symlink prod # only mirror and symlink creation
Usage:
    zyos:filesystem [options] [--] [<environment>]

Arguments:
    environment     Runtime environment [default: "dev"]

Options:
    --mirror        Run only directory mirroring
    --symlink       Run only create symlink
    --directory     Run directory creation only
    --show-output   Show command output

CLI

此命令使用 symfony 组件 "Process",它直接在应用程序所在的操作系统中执行命令。

zyos_install:
    cli:
        -   command: ['mkdir', '-p', '/app/public/test3']
            environments: ['prod', 'dev']
            enable: true
            if_error: 'stop'
  • command: (array) 要执行的命令。此命令遵循 Process 组件的规则。
  • environments: (array) 命令将在其中执行的环境。
  • priority: (integer) 这是命令执行的优先级,(正值) 数字越高,优先级越低,(负数) 数字越高,优先级越高。
  • if_error: (enum:[none, stop]) 如果发生错误,此字段将限制命令的操作,命令(CLI)返回 3 个退出代码:成功:0,失败:1,无效:2。在这种情况下,错误情况下有两个值:1 和 2,命令可以停止,并且配置的后续命令不会执行,在这种情况下使用值:"stop",如果发生错误,但后续命令的执行过程没有停止,则使用值:"none"。

用法

php bin/console zyos:cli
php bin/console zyos:cli <environment>
php bin/console zyos:cli dev
php bin/console zyos:cli --show-output prod
Usage:
    zyos:cli [options] [--] [<environment>]

Arguments:
    environment: Runtime environment [default: "dev"]

Options:
    --show-output  Show command output

验证

此命令生成目录和为每个环境配置的文件的基本验证,这些验证将显示为成功或失败,在这种情况下,在命令级别(CLI)的退出代码为成功:0,失败:1。

在此过程中没有执行限制,其他命令可能具有的块不会生成,但每个验证失败的配置也可以观察。

zyos_install:
    validate:
        - filepath: '%kernel.project_dir%/public/img'
          type: directory
          environments: ['prod', 'dev', 'test']
          enable: true
          validations:
              - exists
              - is_dir
  • filepath: (字符串) 目录和/或文件源路径。
  • type: (枚举:[目录, 文件]) filepath的类型。
  • environments: (array) 命令将在其中执行的环境。
  • enable: (布尔值) 启用或禁用命令。
  • validations: (数组) 要执行的验证。

验证

  • exists: 如果文件或目录存在。
  • is_dir: 如果文件或目录是目录。
  • is_file: 如果文件或目录是文件。
  • is_executable: 如果文件或目录是可执行文件。
  • is_symlink: 如果文件或目录是符号链接。
  • is_writable: 如果文件或目录是可写的。
  • is_readable: 如果文件或目录是可读的。

用法

php bin/console zyos:validate
php bin/console zyos:validate <environment>
php bin/console zyos:validate dev
php bin/console zyos:cli --only-errors prod
Usage:
    zyos:validate [options] [--] [<environment>]

Arguments:
    environment: Runtime environment [default: "dev"]

Options:
    --only-errors   only show errors