https://github.com/firehed/deploy-command
Symfony Console Deployment Command
https://github.com/firehed/deploy-command
Last synced: 3 months ago
JSON representation
Symfony Console Deployment Command
- Host: GitHub
- URL: https://github.com/firehed/deploy-command
- Owner: Firehed
- Created: 2018-06-23T01:55:58.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-07-10T01:52:37.000Z (almost 2 years ago)
- Last Synced: 2025-01-18T22:40:11.444Z (over 1 year ago)
- Language: PHP
- Size: 22.5 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Symfony Console Deploy Command
[](//packagist.org/packages/firehed/deploy-command)
[](//packagist.org/packages/firehed/deploy-command)
[](https://github.com/Firehed/deploy-command/actions?query=workflow%3ATest)
[](https://github.com/Firehed/deploy-command/actions?query=workflow%3ALint)
[](https://github.com/Firehed/deploy-command/actions?query=workflow%3A%22Static+analysis%22)
[](https://codecov.io/gh/Firehed/deploy-command)
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.
Ultimately, it's a fancy wrapper around running `kubectl set image deploy ...`.
## Configuration and Usage
`composer require firehed/deploy-command`
Somewhere in your existing Symfony Console setup or config:
```php
$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`.
### 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.
## 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.
All of the images deployed will use the same hash, and all deploy together.
Selective deployment is not supported at this time.