shop25 / deployer-cron
Use the Setono cron builder to generate cron files in your deployment process
Requires
- php: ^7.4 || ^8.0
- deployer/deployer: dev-master
- setono/cron-builder: dev-master
- symfony/console: ^4.4 || ^5.0
- thecodingmachine/safe: ^1.0
- webmozart/assert: ^1.0
Requires (Dev)
- setono/code-quality-pack: ^1.4
This package is auto-updated.
Last update: 2025-03-13 12:10:11 UTC
README
Simple handling of cronjobs in your deployment process using the Cron builder library.
Installation
$ composer require shop25/deployer-cron
Usage
The easiest usage is to include the cron recipe which hooks into default Deployer events:
<?php // deploy.php require_once 'recipe/cron.php';
Deployer parameters
The following Deployer parameters are defined:
Parameter | Description | Default value |
---|---|---|
cron_source_dir | The directory to search for cronjob config files | etc/cronjobs |
cron_delimiter | The marker in the crontab file that delimits the generated cronjobs from manually added cronjobs | {{application}} ({{stage}}) |
cron_variable_resolvers | An array of variable resolvers to add to the cron builder | [] |
cron_context | The context to give as argument to the CronBuilder::build method |
[ 'stage' => get('stage') ] |
cron_user | The user onto which the crontab should be added | get('http_user') if you are root, else '' |
NOTICE that the default value of cron_variable_resolvers
is an empty array, but this lib will always add a
ReplacingVariableResolver
with the variables described in the section below.
Build context
The default build context is defined in the Deployer parameter cron_context
. It adds the stage as context which means
you can use the condition
key in your cronjob config:
# /etc/cronjobs/jobs.yaml - schedule: "0 0 * * *" command: "%php_bin% %release_path%/bin/console my:dev:command" condition: "context.stage === 'dev'"
The above cronjob will only be added to the final cron file if the deployment stage equals dev
.
Extra variables available
This library also adds more variables you can use in your cronjob configs:
%application%
: Will output the application name%stage%
: Will output the stage, i.e.dev
,staging
, orprod
%php_bin%
: Will output the path to the PHP binary%release_path%
: Will output the release path on the server
With these variables you can define a cronjob like:
# /etc/cronjobs/jobs.yaml - schedule: "0 0 * * *" command: "%php_bin% %release_path%/bin/console my:command"
And that will translate into the following line in your crontab:
0 0 * * * /usr/bin/php /var/www/your_application/releases/23/bin/console my:command