Releases: dagu-org/dagu
v1.23.0
This release introduces several enhancements, including a GitHub Actions executor (which allows you to run GitHub Actions in your DAG locally!), JSON Schema validation for parameters, secrets support, improved Windows compatibility, an upgraded Web UI, and many bug fixes.
Here's an example of cloning a repository using actions/checkout GitHub Actions:
workingDIr: /tmp/dagu-workdir
secrets:
- name: GITHUB_TOKEN
provider: env
key: GITHUB_TOKEN
steps:
- name: checkout
command: actions/checkout@v4
executor: gha
params:
repository: dagu-org/dagu
ref: main
token: "${GITHUB_TOKEN}"We welcome feedback, issues, and contributions for this new version.
Changed
- Status: Adopted canonical lowercase tokens for DAG and node lifecycle states (
not_started,queued,running,succeeded,partially_succeeded,failed,canceled), and updated API examples, docs, and telemetry labels to match. - Status: Updated the Sub-DAG execution field to support
callfield alias.
Added
- CLI: Added
--dagu-homeglobal flag to override the application home directory on a per-command basis. Useful for testing, running multiple instances with isolated data, and CI/CD scenarios. - CLI: Added
dagu validatecommand to validate DAG specifications without executing them. Prints human‑readable errors and exits with code 1 on failure. - API: Added
POST /api/v2/dags/validateto validate DAG YAML. Returns{ valid: boolean, errors: string[], dag?: DAGDetails }. - API:
POST /api/v2/dagsnow accepts optionalspecto initialize a DAG. The spec is validated before creation and returns 400 on invalid input. - API: Added
POST /api/v2/dag-runsto create and start a DAG-run directly from an inline YAMLspecwithout persisting a DAG file. Supports optionalname,params,dagRunId, andsingleton. - API: Added
nextRunsort option toGET /api/v2/dagsto sort DAGs by their next scheduled run time. DAGs with earlier next runs appear first in ascending order, and DAGs without schedules appear last. - Steps: Add support for shebang detection in
script. - Steps: Multi-line
commandstrings now execute as inline scripts, including support for shebang. - DAG: Introduced a
secretsblock that references external providers (built-inenvandfile) and resolves values at runtime with automatic log/output masking. - Parameters: Added JSON Schema validation mode with
schema. - Runtime: Injects
DAG_RUN_STATUSinto handler environments so exit/success/failure/cancel scripts can branch on the final canonical status. - Executors: Added an experimental GitHub Actions executor (
type: gha) powered by nektos/act; action inputs come from the new step-levelparamsmap. - UI: Added accordion-style expandable node rows to display step logs inline, similar to GitHub Actions, reducing the need to open popup windows (#1313).
- Security: Implemented security filtering for system environment variables passed to step processes and child DAGs.
Fixed
- DAG name validation is centralized and enforced consistently: names must be
<= 40chars and match[A-Za-z0-9_.-]+. Endpoints that acceptnamenow return400 bad_requestfor invalid names. - Docker: Fixed container initialization bug with
registryAuthsfield (#1330) - Windows: Fixed process cancellation not terminating subprocesses by recursively killing all child processes (#1342)
- UI: Fixed duration display update bug in DAG run details
- Other small issues and improvements
Contributors
Thanks to our contributors for this release:
| Contribution | Author |
|---|---|
| Docker-in-Docker container execution issues (#1228, #1231, #1235) and registryAuths bug report (#1327) | @bellackn |
| Container name support (#1237), bash requirement (#1239), command field (#1261), log buttons (#1301), and scroll issues (#1324) | @Pangolin2097 |
| Accordion-style log expansion feature request (#1313) | @borestad |
| SSH environment variables feature request (#1238) | @n3storm |
| SSH config override issue report (#1249) | @TrezOne |
| DAG dependency resolution error report (#1262) | @JuchangGit |
| Quickstart guide issue report (#1263) | @Vad1mo |
| Parallel JSON execution issues (#1274) | @tetedange13 |
| Grouped DAGs mobile UI bug report (#1294) | @jarnik |
| Cleanup and status propagation feature request (#1305) | @vnghia |
| Environment variables behavior bug report (#1320) | @thibmart1 |
| System status UI issue report (#1224) | @jeremydelattre59 |
| Script execution error (#1203) and stop-all API feature request (#1211) | @Kaiden0001 |
| Dotenv loading bug report (#1210) | @don-philipe |
| Script field issue report (#1334) | @xinxinxinye |
| Queue override implementation (#1240) and clear queue feature (#1298, #1299) | @kriyanshii |
| JSON Schema validation for params implementation (#1273) | @thefishhat |
| SSH script validation implementation (#1308) | @AdityaTel89 |
| README updates (#1326), unit tests (#1329), and legacy directory warning (#858, #1336) | @arky |
| Windows process cancellation fix with recursive subprocess termination (#1207, #1342) | @lvoeg |
| Extensive troubleshooting and community support: container name (#1237), SSH environment variables (#1238), DAG dependency resolution (#1262), cleanup and status propagation (#1305), environment variables behavior (#1320), clear queue feature (#1298), Docker-in-Docker (#1235), and CLI/masking discussions (#1314, #1317, #1273) | @ghansham |
New Contributors
- @AdityaTel89 made their first contribution in #1308
- @lvoeg made their first contribution in #1342
Full Changelog: v1.22.4...v1.23.0
v1.22.10
This release includes a new UI feature to clear the queue, an API enhancement that supports using latest as a Run ID, a UI fix improving grouped DAG visibility on mobile, and several bug fixes in the DAG execution engine. Many thanks to @kriyanshii for the contribution and to everyone who reported issues.
Added
- UI: add clear queue functionality #1298 (#1299) by @kriyanshii
- API: add support for
latestinGET /api/v2/dag-runs/{name}/{dagRunId}(#1300)
Fixed
- UI: display grouped DAGs (#1295)
- DAG: treat single JSON object as a parallel item (#1297)
- DAG: initialize node before setting node status running (#1302)
Full Changelog: v1.22.9...v1.22.10
v1.22.9
v1.22.8
v1.22.7
v1.22.6
In this release, we’ve applied several bug fixes to the docker-executor. One important change is that the default maxCleanUpTimeSec has been reduced from 60 seconds to 5 seconds. This means your application has only 5 seconds to exit once it receives a termination signal; otherwise, it will be killed with SIGKILL. If needed, you can modify maxCleanUpTimeSec in the base DAG or on a per-DAG basis.
Changelog
- bb0b125 [#1237] fix: container name is not properly set & container does not stop when a DAG run is cancelled (#1271)
Full Changelog: v1.22.5...v1.22.6
v1.22.5
v1.22.4
This release updates the SSH field to support the use of parameters and environment variables in configuration. For more details see the documentation.
Changelog
What's Changed
- feat: Allow params & environment variables in SSH field by @yottahmd in #1247
- test(integration): verify containerName-only executor config works by @yottahmd in #1248
Full Changelog: v1.22.3...v1.22.4
v1.22.3
This release includes enhancement for container field, queue override option, and bugfix for the system health page in the Web UI. Now you can run a container using its entrypoint or arbitrary command and execute steps in the container.
Example:
container:
image: postgres:16
env:
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=appdb
startup: entrypoint
waitFor: running
steps:
- name: check-ready
command: pg_isready -U postgres -d appdb
retryPolicy:
limit: 10
intervalSec: 1
- name: create-table
command: psql -U postgres -d appdb -c "CREATE TABLE IF NOT EXISTS demo(id INT PRIMARY KEY, name TEXT);"For more details, visit documentation.
Changes
- feat: Add queue override option on enqueue by @kriyanshii in #1240
- feat: enhance container options by @yottahmd in #1244
- fix(ui): correct api params by @yottahmd in #1246
Full Changelog: v1.22.2...v1.22.3
v1.22.2
This release includes several bug fixes and new endpoint POST /api/v2/dags/{dagName}/stop-all.
What's Changed
- ci: add manual docker build workflow by @yottahmd in #1225
- feat: Add POST
/api/v2/dags/{dagName}/stop-allendpont by @yottahmd in #1226 - fix: skip history data with empty status or started at by @yottahmd in #1227
- doc: correct docker-in-docker example by @yottahmd in #1230
- feat: add logging output for migration command by @yottahmd in #1229
- fix: fallback on docker-in-docker situation by @yottahmd in #1232
- feat: add support for
key=valueenv by @yottahmd in #1233 - doc: remove deprecated field name in the doc by @yottahmd in #1234
Thank you @bellackn, @ghansham, and @Kaiden0001 for feedback and requests.
Full Changelog: v1.22.1...v1.22.2