Originally developed at Information System Authority of Estonia (Riigi Infosüsteemi Amet, RIA) as part of the Bürokratt project.
- Original Repository: https://github.com/buerokratt/CronManager
- Original Development: Since 2023
- Original Team: Bürokratt team
This repository is maintained by Rainer Türner (architect and development lead of the original project) since October 2, 2025, under the Buerostack organization to continue active development without affecting the owner of Bürokratt's version of CronManager.
- Repository: https://github.com/Buerostack/CronManager
- Maintained by: Rainer Türner
- Project: Buerostack
- Status: Active Development
A lightweight, Docker-ready cron-based job scheduler. Schedule and manage HTTP requests and shell script executions with simple YAML configurations.
CronManager is a Quartz-based job scheduling service built with Spring Boot that enables you to orchestrate HTTP requests and shell script executions using simple YAML configuration files. Designed for containerized environments, it provides a RESTful API for job management and supports cron expressions for flexible scheduling.
# Clone and start
git clone https://github.com/Buerostack/CronManager.git
cd CronManager
docker-compose up -d
# Verify it's running
curl http://localhost:9010/actuator/health
For detailed installation and setup, see the Getting Started Guide.
- HTTP Jobs: Execute GET, POST, PUT, DELETE, PATCH requests on schedule
- Shell Jobs: Run shell scripts with environment variables
- Cron Scheduling: Full Quartz cron expression support
- Manual Triggers: Execute jobs on-demand via REST API
- Time Boundaries: Set start/end dates for seasonal jobs
- Docker Ready: Instant deployment with Docker Compose
- RESTful API: Complete job management via HTTP endpoints
Create a job definition in DSL/samples/my-jobs.yaml
:
# HTTP job
health_check:
trigger: "0 */5 * * * ?" # Every 5 minutes
type: http
method: GET
url: https://api.example.com/health
# Shell job
daily_backup:
trigger: "0 0 2 * * ?" # Daily at 2 AM
type: exec
command: ./scripts/samples/backup.sh
Restart to load: docker-compose restart
- Getting Started - Installation, configuration, and first job
- Creating HTTP Jobs - HTTP request scheduling
- Creating Shell Jobs - Shell script execution
- Production Deployment - Production setup and configuration
- Troubleshooting - Common issues and solutions
- API Reference - OpenAPI specification
- Architecture Overview - System design
- File Structure - Project organization
- Data Flow - Execution flows
- Basic HTTP Job - Simple HTTP GET example
- Basic Shell Job - Simple shell script example
- Advanced Scheduling - Complex cron patterns
# List all jobs
curl http://localhost:9010/jobs
# Execute a job manually
curl -X POST http://localhost:9010/execute/{group}/{job}
# View running jobs
curl http://localhost:9010/running
# Health check
curl http://localhost:9010/actuator/health
See API Reference for complete documentation.
# Build locally
./gradlew build
# Run without Docker
./gradlew bootRun
# View logs
docker-compose logs -f cronmanager
See Contributing Guide for development setup and guidelines.
Common issues:
- Jobs not loading: Check
docker-compose logs -f cronmanager
and verify YAML syntax - Container fails: Try
docker-compose down && docker-compose up --build
- Scripts not executing: Ensure scripts are executable with
chmod +x scripts/samples/*.sh
See Troubleshooting Guide for comprehensive solutions.
Please see CONTRIBUTING.md for guidelines on how to contribute to this project.
This project is licensed under the MIT License - see the LICENSE file for details.
Maintained by Rainer Türner • Part of the Buerostack project