Symfony Console Deploy Command
, (*1)
, (*2)
This is a premade Symfony Console component to manually deploy your application.
At this time, it only supports deployment to Kubernetes via kubectl
.
Deploying multiple images at once is supported., (*3)
Ultimately, it's a fancy wrapper around running kubectl set image deploy ...
., (*4)
Configuration and Usage
composer require firehed/deploy-command
, (*5)
Somewhere in your existing Symfony Console setup or config:, (*6)
$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();
In your image
, $IMAGE
will be substituted with the commit hash of the command argument, or that of master
.
It is NOT a PHP variable in the above example (note single quotes).
namespace
is optional, and will default to Kubernetes' default
., (*7)
Event hooks
The deploy command will run any event hooks you request before or after the deployment process runs.
To register a hook, call $deploy->before($hook);
or $deploy->after($hook);
The hook must be a callable with the signature function (string $hash, string $revision, bool $isDryRun)
.
Hooks were designed primarily for sending notifications (e.g. posting to Slack) but can be used for whatever you want., (*8)
Requirements and Limitations
This only works in git repositories, and expects that your docker image will be tagged with the full 40-character commit hash (e.g. yourname/yourfancyproject:92dac20583b35ea7167366bbf0b24243016911c0
).
This is only a deployment tool, and does not perform the builds., (*9)
All of the images deployed will use the same hash, and all deploy together.
Selective deployment is not supported at this time., (*10)