setono/deployer-cron

Use the Setono cron builder to generate cron files in your deployment process

Fund package maintenance!
Setono

v1.0.0-alpha 2024-10-03 08:30 UTC

This package is auto-updated.

Last update: 2024-11-03 08:43:29 UTC


README

Latest Version Software License Build Status

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 default Deployer lifecycle:

<?php
// deploy.php

require_once 'recipe/cron.php';

Deployer parameters

The following Deployer parameters are defined:

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 * * *', '/usr/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 release_path and stage in the cronjob config file.

Testing

  1. Build the Docker image:
docker build -t setono/deployer-cron --no-cache ./tests/docker
  1. Run the Docker container:
docker run -d -p 2222:22 setono/deployer-cron
  1. Run the tests:
vendor/bin/phpunit