What's Changed
- [#709] feat: Add
skipIfSuccessful
by @yohamta in #712 - fix: incorrect paths in config docs by @jonnochoo in #713
- feat: Support configurable base path for server by @chrishoage in #714
- docs: added docs for CRON_TZ by @jonnochoo in #716
- Improve Dockerfile to reduce amount of config needed in docker-compose by @chrishoage in #723
- chore: add support for devcontainers by @jonnochoo in #728
- add support for default page by @jonnochoo in #729
- [#730] Add Remote-Node support by @yohamta in #731
- [#732] Upgrade to Go 1.23 and Golanci-lint 1.62 by @yohamta in #733
New Features
Remote Node support
Dagu now supports managing multiple Dagu servers from a single UI through its remote node feature. This allows you to:
- Monitor and manage DAGs across different environments (dev, staging, prod)
- Access multiple Dagu instances from a centralized UI
- Switch between nodes easily through the UI dropdown
- See Remote Node Configuration for more details.
Configuration:
Remote nodes can be configured by creating admin.yaml
in $HOME/.config/dagu/
:
# admin.yaml
remoteNodes:
- name: "prod" # Name of the remote node
apiBaseUrl: "https://prod.example.com/api/v1" # Base URL of the remote node API
- name: "staging"
apiBaseUrl: "https://staging.example.com/api/v1"
Timezone config in schedule
You can specify a cron expression to run within a specific timezone.
schedule: "CRON_TZ=Asia/Tokyo 5 9 * * *" # Run at 09:05 in Tokyo
steps:
- name: scheduled job
command: job.sh
skipIfSuccessful
skipIfSuccessful. When set to true, Dagu will automatically check the last successful run time against the defined schedule. If the DAG has already run successfully since the last scheduled time, the current run will be skipped.
schedule: "0 */4 * * *" # Run every 4 hours
skipIfSuccessful: true # Skip if already succeeded since last schedule (e.g., manually triggered)
steps:
- name: resource-intensive-job
command: process_data.sh
New Contributors
- @chrishoage made their first contribution in #714
Full Changelog: v1.14.8...v1.15.0