kirschbaum-development/laravel-preflight-checks

部署或开发前的预检清单

0.5.0 2024-06-24 13:49 UTC

This package is auto-updated.

Last update: 2024-08-24 14:06:54 UTC


README

Laravel Supported Versions MIT Licensed

执行预检以确保部署或开发的配置和设置。

此包特别适用于配置单独管理的自动化部署(例如通过Docker、K8s等容器化部署)。它还可以用作设置本地和/或开发环境的通过/不通过检查。

安装

您可以通过composer安装此包

composer require kirschbaum-development/laravel-preflight-checks

设置

在要求composer包后,发布配置文件

php artisan vendor:publish --provider="Kirschbaum\PreflightChecks\PreflightChecksServiceProvider"

使用您应用程序所需的配置配置config/preflight_checks.php文件。根据典型环境提供了一些默认值(已注释)。

配置文件的结构如下:'checks' > 环境名称 > 检查数组

return [
    'checks' => [
        'production' => [
            // Database::class,
            // Redis::class,
            // Configuration::class => [
            //     // Essential production keys here
            // ],
        ],

        'anyEnvironmentName' => [
            // Any class(es) extending Kirschbaum\PreflightChecks\Checks\PreflightCheck::class
        ],

        // ...
    ],
];

每个检查都可以指定选项,例如

'production' => [
    Database::class => [
        'connection' => 'db2'
    ],
]

或者使用完全显式的语法

'production' => [
    [
        'check' => Database::class,
        'options' => [
            'connection' => 'db2'
        ]
    ],
]

如果您需要重复检查(例如,使用多个数据库连接),则需要使用完整的语法。

可用检查

数据库

Kirschbaum\PreflightChecks\Checks\Database

检查是否可以通过PDO建立数据库连接,以及是否设置了所需的配置键。它输出一些服务器信息和版本信息。

Redis

Kirschbaum\PreflightChecks\Checks\Redis

检查是否可以建立Redis连接,以及是否设置了所需的配置键。

配置

Kirschbaum\PreflightChecks\Checks\Configuration

检查指定的配置键是否已设置。此检查配置的值,而不是env的值,以确保在更高环境中正确检测。因此,请确保指定与config(...)相同的键。

Configuration预检检查接受的选项是要检查的配置键列表。例如

'production' => [
    Configuration::class => [
        'services.payment.key',
        'services.mail.key',
        // ...
    ]
]

您还可以传递一个提示(仅推荐用于本地开发),如果未设置键,则将显示该提示。例如

'local' => [
    Configuration::class => [
        'services.payment.key' => 'In dashboard as "Super Secret API Token Key Thing"',
        'services.mail.key',
        // ...
    ]
]

当新的开发人员设置他们的环境并且缺少该配置值时,他们将获得一个友好的消息,帮助他们找到该键。

您还可以使用OptionalConfiguration类指定可选的配置值并提供提示,该类以相同的方式运行,但不会使命令失败。

编写您自己的检查!

如果您有特殊的启动考虑事项,可以自由地编写自己的检查,扩展Kirschbaum\PreflightChecks\Checks\PreflightCheck

$requiredConfig属性上指定任何必要的配置键。

实现check方法,该方法应执行您的检查并标记$result为通过/失败。

示例

/**
 * Performs the preflight check.
 *
 * This method should set a pass/fail on the result.
 */
public function check(Result $result): Result
{
    try {
        // Check something is up/ready/willing/etc
    } catch (Exception $e) {
        return $result->fail($e->getMessage(), $e);
    }

    return $result->pass('Woohoo! It didn\'t fail!', $dataFromTheCheck);
}

用法

基本用法是通过Artisan命令

php artisan preflight:check

如果您想看到成功的检查信息(而不仅仅是失败),请添加详细标志-v

您可以通过指定Artisan环境(--env)来测试其他环境。

对于更高和/或自动化的环境(如CI/CD),您可能想使用--show-only-failures标志以减少噪音。

Kubernetes

在Kubernetes部署中,这可以在启动探测(1.20+)中使用

startupProbe:
  exec:
    command:
    - php
    - artisan
    - preflight:check
    - --show-only-failures
  failureThreshold: 30
  periodSeconds: 10

您也可以为就绪探针设置此操作,但请注意,探针在整个容器生命周期中都会运行(我们正在建立与Redis或数据库的连接,这些连接不可忽视)。

容器化环境

在容器化环境中(包括K8s),您可能想使用此命令“阻塞”容器启动(例如php-fpm),以确保正确加载了环境并且缓存得当。对于标准的php-fpm Docker容器,您可以使用以下启动脚本:

#!/bin/bash
set -e

php artisan optimize
php artisan preflight:check -v
php-fpm

本地环境

preflight:check命令还可以提供确保所有适当的环境配置已经实施的具体方法。这在新加入的开发者中尤其有用,因为他们只需运行php artisan preflight:check就可以很好地了解在他们的环境上线之前还需要设置/配置什么。

贡献

有关详细信息,请参阅CONTRIBUTING

安全性

如果您发现任何安全相关的问题,请通过电子邮件security@kirschbaumdevelopment.comnathan@kirschbaumdevelopment.com发送,而不是使用问题跟踪器。

致谢

赞助

此包的开发由专注于问题解决、团队建设和社区的Kirschbaum Development Group赞助。了解更多关于我们加入我们

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件