Skip to content

Releases: simplesurance/baur

v5.1.0

12 Nov 16:49
@fho fho
07b2c61
Compare
Choose a tag to compare

Release Notes

Changes

This release introduces the --fail-fast parameter for baur run, improves
baur cleanup performance and fixes minor issues.

New Features

  • baur run: got a --fail-fast parameter, when specified and multiple tasks
    are run, queued tasks are skipped when an error occurs while executing a task

Enhancements

  • baur cleanup: Improve performance by optimizing queries and adding a
    database index.
    The index is created by running baur update db. The operation increments the
    database schema version and makes the database incompatible with prior baur
    versions. The operation is optional. baur 5.1.0 is compatible with the
    database schema of baur 5.0.0.
  • Release Binaries: built with Go 1.23.3
  • 3. Party Packages: upgraded to new versions

Bug Fixes

  • baur cleanup: fixed the spelling in terminal message
  • baur init db: fixed that a baur repository config must exist when the
    BAUR_POSTGRESQL_URL environment variable is set

--

Full Changelog: v5.0.0...v5.1.0

v5.0.0

15 Jul 17:00
@fho fho
657eb8f
Compare
Choose a tag to compare

Release Notes

This version adds a baur cleanup db command, for deleting old records from the
database.

The database schema is not compatible with earlier versions. Please refer to the
Upgrade instructions in
the Wiki.

Changes

New Features

  • Database Cleanup: old releases and task runs can be deleted from the
    database with the new baur cleanup db command

Enhancements

  • Time durations printed in plain format on the terminal are consistently truncated at next
    lower precision

Bug fixes

  • baur ls runs: The timestamps specified as --before and --after
    parameters were interpreted as being in the UTC timezone.
    This is changed to be interpreted as being in the local system timezone instead.
  • baur ls --help: replace "builds" with "runs" in usage description

Full Changelog: v4.0.0...v5.0.0

v4.0.0

18 Jun 16:01
@fho fho
0500568
Compare
Choose a tag to compare

Release Notes

This version brings support for managing releases, a new TaskInfo input type and
various smaller improvements.

The configuration files and the database schema are not compatible with
earlier versions. Please refer to the Upgrade instructions in the Wiki.

Changes

New Features

Releases

baur now supports managing releases.
Releases are named snapshot of existing task runs for a repository.
Arbitrary data, such as release notes, can be attached to a release.

New Commands:

  • baur release create RELEASE-NAME: creates a release
  • baur release show RELEASE-NAME: displays the applications, tasks,
    task-runs, their outputs, upload destinations and release metadata in JSON
    format
  • baur release download RELEASE-NAME DEST-DIR: downloads outputs stored on
    S3 of task runs belonging to the release

TaskInfo Inputs

A TaskInfo input can be defined via the following section in a .app.toml
file:

[[Task.Input.TaskInfos]]
  task_name = "check"
  env_var = "CHECK_TASK_INFO_FILEPATH"

All inputs of the dependent task (check in this example) are tracked for
changes.
task_name specifies the name of a task of the same application for which
information are provided.
env_var specifies the name of an environment variable, that is set, during
the execution of the task command, to a temporary file containing the
information. The information are in JSON format and are:

{
  "TotalInputDigest": "sha384:118cb50a647884f442deb9cc796f2590c443b8d2220b42e4502ffbc6f103f11a7ad2b3f0b8684d19f22bf704e7f599ae",
  "AppDir": "/tmp/baur-filesrc-test3814551359/app",
  "Outputs": [
    {
      "URI": "/tmp/TestRun_TaskInfoFileContent2435369936/001/out"
    }
  ]
}

Depending on the status of the dependent tasks, the listed output URIs might or
might not exist. If the status of the check tasks is exist, the outputs are
queried from the database for the existing run. If the task has not been run
yet, the output information are evaluated from the definition of the task. If
the output URI is deterministic and the check task is run later with the same
inputs run, the output will be created to the URI.
baur run does not order the execution depending on TaskInfos. That means if a
referenced TaskInfo task and the task itself is run, it is not guaranteed that
the Outputs in the TaskInfo file exist.

Enhancements

  • Config Validation: fail if multiple .app.toml files declare
    the same application name, the issue is only detected if all application
    files are loaded
  • upgrade db: the PostgreSQL URL can now be passed as command line argument
  • Usage Output: improved descriptions
  • Verbose Output: the redacted PostgreSQL URL is logged when establishing a
    database connection
  • Error Messages: improved error message when baur database does not exist
  • Release Binaries: built with Go 1.22.4
  • 3. Party packages: upgraded to new versions
  • Database: duplicate indices are deleted

Incompatible Changes

  • App and Task Name Validation: more strict validation:
  • CSV Output: the first printed line is now a header, containing the field
    names, printing the header can be suppressed by passing --quiet
  • --csv Parameter: the parameter is replaced with --format=csv
  • DB & Config Upgrade: support for upgrading baur configs and database for older baur versions
    than v3 is removed

Bug fixes

  • application and tasks are shown and run multiple times if they match
    multiple target specifiers (bug has been introduced in baur 3.4.2)
  • Memory Usage: fixed that more memory then required is preallocated for
    some PostgreSQL queries,
  • Error Messages: fixed missing "ERROR: " prefix and duplicate newlines in
    some messages

Full Changelog: v3.4.2...v4.0.0

v4.0.0-rc1

11 Jun 11:07
@fho fho
da6bed7
Compare
Choose a tag to compare
v4.0.0-rc1 Pre-release
Pre-release

Release Notes

This is a release candidate. The changes are not final.

This version brings support for managing releases, a new TaskInfo input type and
various smaller improvements.

The configuration files and the database schema are not compatible with
earlier versions. Please refer to the Upgrade instructions in the Wiki.

Changes

New Features

Releases

baur now supports managing releases.
Releases are named snapshot of existing task runs for a repository.
Arbitrary data, such as release notes, can be attached to a release.

New Commands:

  • baur release create RELEASE-NAME: creates a release
  • baur release show RELEASE-NAME: displays the applications, tasks,
    task-runs, their outputs, upload destinations and release metadata in JSON
    format
  • baur release download RELEASE-NAME DEST-DIR: downloads outputs stored on
    S3 of task runs belonging to the release

TaskInfo Inputs

A TaskInfo input can be defined via the following section in a .app.toml
file:

[[Task.Input.TaskInfos]]
  task_name = "check"
  env_var = "CHECK_TASK_INFO_FILEPATH"

All inputs of the dependent task (check in this example) are tracked for
changes.
task_name specifies the name of a task of the same application for which
information are provided.
env_var specifies the name of an environment variable, that is set, during
the execution of the task command, to a temporary file containing the
information. The information are in JSON format and are:

{
  "TotalInputDigest": "sha384:118cb50a647884f442deb9cc796f2590c443b8d2220b42e4502ffbc6f103f11a7ad2b3f0b8684d19f22bf704e7f599ae",
  "AppDir": "/tmp/baur-filesrc-test3814551359/app",
  "Outputs": [
    {
      "URI": "/tmp/TestRun_TaskInfoFileContent2435369936/001/out"
    }
  ]
}

Depending on the status of the dependent tasks, the listed output URIs might or
might not exist. If the status of the check tasks is exist, the outputs are
queried from the database for the existing run. If the task has not been run
yet, the output information are evaluated from the definition of the task. If
the output URI is deterministic and the check task is run later with the same
inputs run, the output will be created to the URI.
baur run does not order the execution depending on TaskInfos. That means if a
referenced TaskInfo task and the task itself is run, it is not guaranteed that
the Outputs in the TaskInfo file exist.

Enhancements

  • Config Validation: fail if multiple .app.toml files declare
    the same application name, the issue is only detected if all application
    files are loaded
  • upgrade db: the PostgreSQL URL can now be passed as command line argument
  • Usage Output: improved descriptions
  • Verbose Output: the redacted PostgreSQL URL is logged when establishing a
    database connection
  • Error Messages: improved error message when baur database does not exist
  • Release Binaries: built with Go 1.22.4
  • 3. Party packages: upgraded to new versions
  • Database: duplicate indices are deleted

Incompatible Changes

  • App and Task Name Validation: more strict validation:
  • CSV Output: the first printed line is now a header, containing the field
    names, printing the header can be suppressed by passing --quiet
  • --csv Parameter: the parameter is replaced with --format=csv
  • DB & Config Upgrade: support for upgrading baur configs and database for older baur versions
    than v3 is removed

Bug fixes

  • application and tasks are shown and run multiple times if they match
    multiple target specifiers (bug has been introduced in baur 3.4.2)
  • Memory Usage: fixed that more memory then required is preallocated for
    some PostgreSQL queries,
  • Error Messages: fixed missing "ERROR: " prefix and duplicate newlines in
    some messages

Full Changelog: v3.4.2...v4.0.0-rc1

v3.4.2

16 Apr 13:20
@fho fho
a3d2bf8
Compare
Choose a tag to compare

Release Notes

Changes

  • 3. party packages updates
  • baur show: now shows the Config Files of an app after the Name line

Bugfixes

  • baur run does not panic anymore on some errors when a command is executed. This happened for example if the path to the executed binary did not exist.

Full changelog: v3.4.1...v3.4.2

v3.4.1

04 Mar 17:35
@fho fho
Compare
Choose a tag to compare

Release Notes

Changes

  • built with Golang 1.22
  • 3. party packages updates
  • Golang Input Resolver
    • Improved error message when executing go env fails

Bug Fixes

  • Golang Input Resolver
    • When baur was not run from the application directory and Golang sources
      were resolved via a fileglob pattern that matched multiple main packages,
      the result only contained the source files for one of them.
      file= and fileglob= patterns are now always converted to
      absolute paths before to prevent the issue.
    • When go env was invoked when resolving Golang input files, it was run in
      the current directory instead of the application directory.
      No cases are known where it caused issue, all go env variables
      that are read and used are normally the same independent of the execution
      directory.

Full changelog: v3.4.0...v3.4.1

v3.4.0

01 Feb 17:23
@fho fho
Compare
Choose a tag to compare

Release Notes

Changes

  • JSON Support:
    The commands baur ls apps, baur status and baur ls outputs now support
    JSON as output format via the new --format=json parameter.
    The --csv parameter is deprecated in favor of --format=csv.
  • Change Tracking:
    • Symlinks in input file paths are now resolved and tracked.
      Tasks are rerun when:
      • a symlink is replaced with their target file and vice-versa,
      • a symlink target path is changed to a file that has the same content
        then the previous one,
    • On Unix systems, changes of the executable bit of the owner of InputFiles
      are now tracked, changes trigger tasks reruns.
  • Shell Completion:
    Completion for the --repository parameter is limited to directory paths.
  • 3. party package updates

Bug Fixes

  • baur run: when --show-task-output or --verbose was passed, the output of
    the executed command was interpreted as format string for the log-printf
    function, this resulted in unexpected output.

Full changelog: v3.3.0...v3.4.0

v3.3.0

19 Jan 13:33
@fho fho
Compare
Choose a tag to compare

Release Notes

Changes

  • baur now supports to query git object IDs from a git repository and use them as file digests.
    This is faster then having to read each file and calculate it's digest.
    Object IDs for untracked or modified files are calculated by running git hash-object.
    For non-git repositories, input file digest calculation remains as before, the SHA384 of their content is calculated.
  • added global --repository parameter, to specify a path to the baur repository, enabling running baur from outside of a baur repository

v3.2.0

17 Jan 14:19
@fho fho
Compare
Choose a tag to compare

Release Notes

Changes

  • For task artifacts that are uploaded to S3 , baur now stores the s3://<BUCKET>/<OBJECT-ID> URI instead of the https path-style URL of the S3 object.
  • baur run and baur status: got a new --require-clean-git-worktree parameter, when passed and the git repository of the baur project contains files that are not tracked or have been modified and not commited baur will fail
  • baur run
    • When the execution of a task command fails, the execution directory, the executed binary and it
      s argument, if the process was killed by a signal or if broken pipe occurred is now included in the error message, the text coloring has also been improved
    • When the output of the command is streamed and error occurs during streaming, the error message contains the name of the stream
  • Release artifacts built with Go 1.21.6

Bug Fixes

  • baur run:
    • fixed that when writing to one of the output channels failed, the error message about the command execution could lack the last stdout and stderr output of the command
    • fixed that when --verbose was passed, newlines were duplicated in the streamed output

Semantic Versioning from Next Minor Version

From baur 3.3.0 on the semantic versioning rules will only be applied to the CLI and database scheme of baur.
The public API of the baur Go packages will be excluded from semantic versioning.

v3.1.1

09 Jan 17:26
@fho fho
Compare
Choose a tag to compare

Release Notes

Changes

  • baur run: when running a command and --show-task-output is not passed, it's output is not splitted into lines and unnecessarily anymore
  • Third party aws packages were updated

Bug Fixes

  • when --show-task-output is passed to baur run and an executed command prints lines longer then 512KB to stdout or stderr, the execution of the command won't fail anymore. Instead a message will be logged and streaming the output is stopped.
    Full changelog: v3.1.0...v3.1.1