Blossom Docs
Blossom

Apps

Jobs And One-Off Commands

Run commands on a schedule or once, alongside your Services

A Job is a saved command in an Environment, such as a nightly report or a cleanup task. Run it on demand or on a schedule. Each run starts a fresh Container from your App’s current release, with its code and variables, so it never disturbs the Containers serving your users. Ask your agent:

Run the cleanup task every night at 2 AM.

Save A Job

blossom job:init

job.yml:

job:
  environment_id: environment-100
  name: maintenance
  command: bin/rails maintenance:cleanup
  # timeout_seconds: 120 # default 900, up to 3600
  schedule:
    enabled: false
    cron: "0 2 * * *"
    time_zone: Etc/UTC
    overlap_policy: skip
blossom job:create --data job.yml
blossom job:run:create --job job-100 --follow

Saving a Job never runs it. Run now on the Job’s page, or job:run:create, starts a run.

Schedule It

Set schedule.enabled: true. Cron has five fields: minute, hour, day of month, month and weekday. Use an IANA time zone such as America/New_York for local time. job:show and the Job’s page show the next run. If a run is still going when the next one is due, the new one is skipped and recorded.

Run A Command Once

For a one-off, such as a report or a data fix, run the command directly. It uses the same release and variables, without saving a Job or deploying:

blossom job:run:create --environment environment-100 --command "bin/rails reports:generate" --follow

Follow And Manage Runs

blossom job:run:list --job job-100
blossom job:run:logs --id job_run-100 --follow
blossom job:run:cancel --id job_run-100

Each run keeps its command, release, output and result, even after the Job changes or is deleted.

What You Get

  • Scheduled and one-off commands without a separate worker to run
  • Each run sized to match your App’s largest Service, unless you choose a size
  • Full output and history for every run, live as it runs
On this page