Skip to content

v1.222.0-rc.13

Pre-release
Pre-release

Choose a tag to compare

@cloudposse-releaser cloudposse-releaser released this 30 Jun 01:49
4569111
Add parallel and matrix workflow control steps Erik Osterman (Cloud Posse) (@osterman) (#2635) ## what
  • Add parallel and matrix workflow control steps with sibling needs DAG 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/parallel and pkg/runner/step/matrix handlers, JSON schema updates, and examples/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/workflow coverage above 80%.

references

  • pkg/workflow coverage: 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: parallel and matrix, supporting needs, 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 with wait, wait-all, and cancel, including readiness gating from container healthchecks.
  • Documentation

    • Added new examples and guides, plus updated workflow schemas and step-type docs for orchestration and structured output.
  • 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-check GitHub Action in the [validate] CI matrix with Atmos itself, running atmos 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 with assignment to entry in nil map when the target atmos.yaml had no schemas: section. Added a lazy-initializing SetSchemaRegistry setter 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 stacks is 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-manifest at 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-advanced and native-terraform are intentionally left out of the matrix (documented inline): the former's stacks/workflows/*.yaml uses newer workflow step types the manifest schema doesn't describe yet, and the latter intentionally configures no stacks.name_pattern.

Summary by CodeRabbit

  • Bug Fixes
    • Prevented schema registry updates from failing when atmos.yaml has no schema section, and ensured adding a registry entry doesn’t remove existing ones.
  • Chores
    • Updated CI to install Terraform/OpenTofu via the Atmos toolchain (OpenTofu pinned), and streamlined stack validation to run atmos validate stacks directly against example folders using in-repo schema files.
    • Expanded validated demo folders to include additional examples.
  • 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.