v1.222.0-rc.13
Pre-release
Pre-release
Add parallel and matrix workflow control steps Erik Osterman (Cloud Posse) (@osterman) (#2635)
## what- Add
parallelandmatrixworkflow control steps with siblingneedsDAG scheduling. - Add configurable failure behavior, parent-owned grouped/prefixed/none output, summary rendering through UI helpers, and child result metadata capture.
- Keep the internal exec integration thin while placing the scheduler, matrix expansion, command child executor, output handling, and tests in
pkg/workflow. - Add workflow/schema validation, registered
pkg/runner/step/parallelandpkg/runner/step/matrixhandlers, JSON schema updates, andexamples/parallel-steps.
why
- Enables non-interactive workflow steps to run concurrently without moving orchestration policy into
internal/exec. - Provides deterministic dependency, failure, output, and matrix semantics before allowing broader step types inside concurrent groups.
- Documents the new behavior with runnable examples and keeps
pkg/workflowcoverage above 80%.
references
pkg/workflowcoverage: 82.9%- Validation run:
go test ./pkg/schema ./pkg/runner/step ./pkg/scheduler ./pkg/workflow ./internal/exec - Validation run:
go test ./cmd ./tests -run 'Workflow|workflow|Schema|schema' - Validation run:
./custom-gcl run --new-from-rev=origin/main --config=.golangci.yml
Summary by CodeRabbit
Release Notes
-
New Features
- Added workflow orchestration control steps:
parallelandmatrix, supportingneeds,max_concurrency, matrix expansion, and failure modes (wait_all,fail_fast,best_effort). - Added parent-owned concurrent output rendering (
grouped/prefixed) with optional per-step completion summaries and configurable prefixes. - Added background container execution via
background: true, coordinated withwait,wait-all, andcancel, including readiness gating from container healthchecks.
- Added workflow orchestration control steps:
-
Documentation
- Added new examples and guides, plus updated workflow schemas and step-type docs for orchestration and structured
output.
- Added new examples and guides, plus updated workflow schemas and step-type docs for orchestration and structured
-
Bug Fixes
- Improved validation rules and default naming for nested orchestration steps.
-
Tests
- Extensive new coverage for orchestration execution, output rendering, validation, and background lifecycle handling.
🚀 Enhancements
fix(validate): dogfood `atmos validate stacks` for example YAML; fix nil-map crash Erik Osterman (Cloud Posse) (@osterman) (#2666)
## what- Replace the deprecated third-party
InoUno/yaml-ls-checkGitHub Action in the[validate]CI matrix with Atmos itself, runningatmos validate stacks --schemas-atmos-manifest <in-repo schema>against each example. - Expand the matrix to also validate three previously-excluded function-using examples (
custom-components,sops-secrets,onepassword-secrets), which now pass because Atmos understands its own YAML tags natively. - Fix a crash in
atmos validate stacks --schemas-atmos-manifest: it panicked withassignment to entry in nil mapwhen the targetatmos.yamlhad noschemas:section. Added a lazy-initializingSetSchemaRegistrysetter and a regression test.
why
- The third-party action targets Node 20 and is force-run on Node 24, emitting deprecation warnings across every
[validate]job; it also can't parse Atmos YAML tags, which forced many examples to be excluded from validation. atmos validate stacksis a strict superset of the old static check (YAML syntax + manifest JSON Schema + import resolution + duplicate-component detection) and parses Atmos tags natively — better coverage with no external dependency. Pointing--schemas-atmos-manifestat the in-repo schema lets a PR add a schema field and use it in an example in the same change.- Dogfooding immediately surfaced and fixed a real user-visible crash in the validate command.
references
quick-start-advancedandnative-terraformare intentionally left out of the matrix (documented inline): the former'sstacks/workflows/*.yamluses newer workflow step types the manifest schema doesn't describe yet, and the latter intentionally configures nostacks.name_pattern.
Summary by CodeRabbit
- Bug Fixes
- Prevented schema registry updates from failing when
atmos.yamlhas no schema section, and ensured adding a registry entry doesn’t remove existing ones.
- Prevented schema registry updates from failing when
- Chores
- Updated CI to install Terraform/OpenTofu via the Atmos toolchain (OpenTofu pinned), and streamlined stack validation to run
atmos validate stacksdirectly against example folders using in-repo schema files. - Expanded validated demo folders to include additional examples.
- Updated CI to install Terraform/OpenTofu via the Atmos toolchain (OpenTofu pinned), and streamlined stack validation to run
- Tests
- Strengthened schema validation coverage by exercising the real CLI for both stack manifests and test-case YAMLs with explicit valid/invalid scenarios and failure assertions.