Ebro

Home Install Changelog Source Code

0.18.0 [release]

Breaking Changes

New label resolution logic

Previously, child tasks would inherit parent tasks labels already resolved with the parent's environment. Now, child tasks inherit the parent's labels unresolved and are resolved using the child task's environment.

tasks:
  parent:
    abstract: true
    environment:
      FOOD: pizza
    labels:
      food: $FOOD
  child:
    extends: [parent]
    environment:
      FOOD: paella
# ebro -i

# before
:child:
  environment:
    FOOD: paella
  labels:
    food: pizza

# after
:child:
  environment:
    FOOD: paella
  labels:
    food: paella

Miscellanea

Updated Go dependencies.

0.17.0 [release]

New Features

  • Now modules can have labels, just like tasks.
  • Now the variable modules is available during --inventory --query evaluation.

Miscellanea

  • Updated Go 1.24.0 -> 1.24.1.

0.16.0 [release]

New Features

  • Now multiline strings are supported in label values.

Breaking Changes

  • Rename EBRO_TASK_MODULE to EBRO_MODULE and make it available for interpolation at module environment level.

0.15.0 [release]

Breaking Changes

  • The "emptiness" validation has been removed. Tasks are no longer checked to have "something to do".
  • Name collisions between modules and tasks inside the same module are not allowed anymore.

Miscellanea

  • Updated Go 1.23.6 -> 1.24.0.

0.14.0 [release]

New Features

  • Now the task properties script, when.output_changes and when.check_fails support a sequence of strings instead of a single string.

Breaking Changes

  • Now scripts (script, when.output_changes and when.check_fails) are concatenated instead of replaced during task extension.
  • Now unset environment variables are not allowed during environment resolution.

Miscellanea

  • Updated Go 1.23.4 -> 1.23.6.
  • Updated Go dependencies.

0.13.1 [release]

Bug fixes

  • Fixed a wrong behavior related to task extension and references introduced in the previous release.

0.13.0 [release]

This release was removed.

New features

  • Added the environment variable EBRO_ROOT_FILE for all tasks. This points to the root Ebro.yaml file.
  • Added querying capabilities to requires and required_by fields.

Bug fixes

  • Fixed an issue in which missing the value of a flag would always report expected value after --file flag regardless of the actual flag name.

Miscellanea

  • Updated Go dependencies.

0.12.0 [release]

Breaking changes

  • Removed --filter from -list and implemented --query for -inventory instead.

0.11.0 [release]

Breaking Changes

  • Now the interactive and labels properties introduced in version 0.10.0 are included in extends operations.

Environment variable expansion

Expanding environment variables now supports referencing variables that were defined before the current variable in the same map.

environment:
  VERSION: "1.0.0"

tasks:
  default:
    environment:
      VERSION: "2.0.0"
      VERSION_RC: "${VERSION}-rc"
    script: echo "$VERSION_RC"

Running the Ebro.yaml file above would result in:

  • before: 1.0.0-rc
  • now: 2.0.0-rc

Miscellanea

  • Change on the ebrow workspace script: Now using shasum instead of sha256sum so the used command behaves the same in both Linux and MacOs.

0.10.0 [release]

New Features

  • Ability to filter tasks in the -list command with the --filter flag, using an expr expression.
  • New fields:
    • labels for defining key/value metadata. Ebro does nothing with this information and is intended for filtering purposes or for being consumed by third party tools.
    • interactive for flagging tasks as interactive. Interactive tasks receive the environment's stdin during execution.
  • New environment variables available for all tasks:
    • EBRO_BIN is the absolute path to Ebro's binary.
    • EBRO_TASK_ID is the current task's ID (:module:task).
    • EBRO_TASK_MODULE is the current task's module (:module).
    • EBRO_TASK_NAME is the current task's name (task).

Breaking Changes

  • import.from parameter does not support Bash environment variable expansion anymore.

0.9.0 [release]

New features

  • New conditional existence system:
    • Optional references in requires (:other:task?)
    • if_tasks_exist property for tasks that should only exist when other tasks do.

Miscellanea

  • Dependencies updated.

0.8.0 [release]

New Features

  • New environment variable available for all tasks: EBRO_TASK_WORKING_DIRECTORY.

Miscellanea

  • Now the output check_fails executions is never printed to stdout.
  • Experimental git functionality in imports have been disabled and will not be included in the builds.
  • Dependencies updated.

0.7.0 [release]

New features

  • New command -list for listing just the names of the tasks in the inventory.
  • Short version for commands have been added: -i, -l, -p, -v and -h.

Breaking changes

  • Unknown properties in Ebro.yaml files are not allowed anymore.
  • When the target in an Ebro execution is prefixed with :, another : will not be added.
    • Before, calling ebro :foo would try to run the task ::foo
    • Now, calling ebro :foo is equivalent to calling ebro foo.

0.6.0 [release]

New features

  • Introduced the task inheritance system. Learn more about it in the documentation.
  • Introduced the new quiet property. Learn more about it in the documentation.

Improvements

  • Improved error handling regarding reference checking and targeted tasks not existing.

Miscellanea

0.3.0 [release]

Breaking changes

set -x added in previous version have been reverted

It's more secure to let users call themselves set -x whenever they need it instead of enabling it by default. It's easy to leak secrets on stdout with it enabled.

0.2.0 [release]

Breaking changes

required_by behavior

Referencing a task in required_by doesn't add the referenced task to the plan anymore. The referenced task will need to be referenced in a requires or directly called as a target. Here's an example:

tasks:
  default:
    requires: [b]

  a:
    script: echo A

  b:
    required_by: [a]
    script: echo B

Before this release:

███ [:b] running
B
███ [:a] running
A
███ [:default] satisfied

After this release:

███ [:b] running
B
███ [:default] satisfied

Tasks with nothing to do are invalid

From now on, tasks that have nothing to do (no script nor requires) are considered invalid and Ebro's execution will error during the inventory process.

Task scripts run with set -x by default

From now on, set -x is prepended to task scripts before being executed to enable simple command tracing.

Improvements

  • Error messages have been adjusted to prevent repeating information and reducing verbosity.

Miscellanea

  • Now, the .sha256 files produced during the release process are valid files to be checked by sha256sum by running sha256sum --check <binary>.sha256, easing up the check process. Before this release it just contained the SHA256 checksum of the file.

0.1.0 [release]

  • Go version updated: 1.23.3 -> 1.23.4.
  • Dependencies updated.
  • ebrow script: Now Ebro's version is part of the bin path. As a result, updating the ebrow script with a new version will force a download of the new version when executed instead of keeping the old version.

0.0.0 [release]

Initial release of Ebro.