setono / deployer-cron
Use the Setono cron builder to generate cron files in your deployment process
Fund package maintenance!
Setono
Installs: 23 375
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 2
Forks: 2
Open Issues: 2
Requires
- php: >=8.1
- deployer/deployer: ^7.4
- setono/cron-builder: ^1.0@alpha
- symfony/finder: ^5.4 || ^6.4 || ^7.0
- webmozart/assert: ^1.10
Requires (Dev)
- phpseclib/phpseclib: ^3.0
- phpunit/phpunit: ^10.5
- setono/code-quality-pack: ^2.8.2
- shipmonk/composer-dependency-analyser: ^1.7
README
Simple handling of cronjobs in your deployment process using the Cron builder library.
Installation
composer require setono/deployer-cron
Usage
The easiest usage is to include the cron recipe which hooks into the default Deployer lifecycle:
<?php // deploy.php require_once 'recipe/cron.php';
Deployer parameters
The following Deployer parameters are defined:
Parameter | Description | Default value |
---|---|---|
cron_config_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 | The stage. If not set, the default is prod . |
cron_user | The user onto which the crontab should be added (default is remote_user ) |
get('http_user') if you are root, else '' |
Cron builder context
The cron builder context is set to the Deployer configuration parameters. This means you can use variables in your cronjob config files. For example:
<?php # etc/cronjobs/jobs.php declare(strict_types=1); use Setono\CronBuilder\Context; use Setono\CronBuilder\CronJob; return static function (Context $context): iterable { yield new CronJob('0 0 * * *', '{{ context("bin/php") }} {{ release_path }}/send-report.php', 'Run every day at midnight'); if ($context->get('stage') === 'prod') { yield new CronJob('0 0 * * *', '/usr/bin/php {{ release_path }}/process.php'); } };
Notice the usage of bin/php
, release_path
and stage
in the cronjob config file. This is possible because the Deployer
configuration is added as context on the cron builder. When the Deployer context key contains a character that would
otherwise be interpreted by Twig (e.g. /
) you can use the context
Twig function to get the value.