Releases: simplesurance/baur
v5.1.0
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 runningbaur 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 messagebaur 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
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 newbaur 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
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 releasebaur release show RELEASE-NAME
: displays the applications, tasks,
task-runs, their outputs, upload destinations and release metadata in JSON
formatbaur 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:
- leading and trailing whitespaces are forbidden,
- comma characters are forbidden,
- only printable UTF-8 characters are
allowed
- 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
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 releasebaur release show RELEASE-NAME
: displays the applications, tasks,
task-runs, their outputs, upload destinations and release metadata in JSON
formatbaur 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:
- leading and trailing whitespaces are forbidden,
- comma characters are forbidden,
- only printable UTF-8 characters are
allowed
- 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
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
Release Notes
Changes
- built with Golang 1.22
- 3. party packages updates
- Golang Input Resolver
- Improved error message when executing
go env
fails
- Improved error message when executing
Bug Fixes
- Golang Input Resolver
- When baur was not run from the application directory and Golang sources
were resolved via afileglob
pattern that matched multiple main packages,
the result only contained the source files for one of them.
file=
andfileglob=
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, allgo env
variables
that are read and used are normally the same independent of the execution
directory.
- When baur was not run from the application directory and Golang sources
Full changelog: v3.4.0...v3.4.1
v3.4.0
Release Notes
Changes
- JSON Support:
The commandsbaur ls apps
,baur status
andbaur 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.
- Symlinks in input file paths are now resolved and tracked.
- 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
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 runninggit 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 runningbaur
from outside of a baur repository
v3.2.0
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
- When the execution of a task command fails, the execution directory, the executed binary and it
- 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
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 tobaur 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