github dagu-org/dagu v1.23.0

latest releases: v1.23.2, v1.23.1
one day ago

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 call field alias.

Added

  • CLI: Added --dagu-home global 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 validate command to validate DAG specifications without executing them. Prints human‑readable errors and exits with code 1 on failure.
  • API: Added POST /api/v2/dags/validate to validate DAG YAML. Returns { valid: boolean, errors: string[], dag?: DAGDetails }.
  • API: POST /api/v2/dags now accepts optional spec to initialize a DAG. The spec is validated before creation and returns 400 on invalid input.
  • API: Added POST /api/v2/dag-runs to create and start a DAG-run directly from an inline YAML spec without persisting a DAG file. Supports optional name, params, dagRunId, and singleton.
  • API: Added nextRun sort option to GET /api/v2/dags to 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 command strings now execute as inline scripts, including support for shebang.
  • DAG: Introduced a secrets block that references external providers (built-in env and file) and resolves values at runtime with automatic log/output masking.
  • Parameters: Added JSON Schema validation mode with schema.
  • Runtime: Injects DAG_RUN_STATUS into 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-level params map.
  • 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 <= 40 chars and match [A-Za-z0-9_.-]+. Endpoints that accept name now return 400 bad_request for invalid names.
  • Docker: Fixed container initialization bug with registryAuths field (#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

Full Changelog: v1.22.4...v1.23.0

Don't miss a new dagu release

NewReleases is sending notifications on new releases.