firehed/deploy-command

部署命令

1.2.0 2020-09-30 01:26 UTC

README

Latest Stable Version License

Test Lint Static analysis codecov

这是一个预先制作的 Symfony Console 组件,用于手动部署您的应用程序。目前,它仅支持通过 kubectl 部署到 Kubernetes。一次部署多个镜像 支持的。

本质上,它是对运行 kubectl set image deploy ... 的一个花哨包装。

配置和用法

composer require firehed/deploy-command

在您的现有 Symfony Console 设置或配置中某处

$targets = [
    [
        'container' => 'your-container-name',
        'deployment' => 'your-deployment-name',
        'image' => 'yourco/yourimage:$IMAGE',
        'namespace' => 'your-deployment-namespace',
    ], [
        // Another thing to deploy at the same time
    ]
];
$kubectl = new Firehed\Console\Deploy\Kubectl($targets);
$deploy = new Firehed\Console\Deploy($kubectl);

$application = new Symfony\Component\Console\Application();
// ...
$application->add($deploy);
$application->run();

在您的 image 中,$IMAGE 将被替换为命令参数的提交哈希,或 master 的哈希。它在上面的例子中 NOT 是一个 PHP 变量(注意单引号)。namespace 是可选的,默认为 Kubernetes 的 default

事件钩子

部署命令将在部署过程运行前后运行您请求的任何事件钩子。要注册一个钩子,请调用 $deploy->before($hook);$deploy->after($hook); 钩子必须是一个具有签名 function (string $hash, string $revision, bool $isDryRun) 的可调用。钩子主要设计用于发送通知(例如,发布到 Slack),但可以用于任何您想要的事情。

需求和限制

此工具仅在 git 仓库中工作,并期望您的 Docker 镜像使用完整的 40 位提交哈希进行标记(例如,yourname/yourfancyproject:92dac20583b35ea7167366bbf0b24243016911c0)。这是一个仅用于部署的工具,并不执行构建。

所有部署的镜像都将使用相同的哈希,并一起部署。目前不支持选择性部署。