Skip to content

v2.0.0

Compare
Choose a tag to compare
@fho fho released this 03 May 15:27

baur 2.0.0

This release is the direct successor of baur version 0.
Because of issues with go-modules, the major version 1 is skipped.

The configuration files and database schema from baur 0.x versions are
incompatible.
Upgrade instructions from version 0 can be found in the Wiki.

Changes

Tasks

Tasks replace the concept of builds.
Per application multiple tasks can be specified that are run and tracked by baur.
Tasks that do not produce any output are supported. This allows to define for
example tasks that run unit-tests.

Includes

Includes are now referenced in the format PATH#INCLUDE_ID.
The INCLUDE_ID is specified in the section of the include definition.
This allows to specify multiple include sections per file.
Include files can contain Task definitions, which can reference input or
output include sections.

Input Resolvers

  • Input resolver results are cached per baur execution.

GolangSources Resolver

  • GolangSources are specified by queries instead of by path. The
    queries are passed to go list. It supports the same query syntax then the
    official Golang tools.
  • The new tests option in the config section controls if a query includes
    testcases in the result,
  • BuildFlags that are forwarded to the Gosource resolver (go list) can be
    defined in the config section.
  • non-vendored dependencies do not resolve to local paths outside of the baur
    repository anymore

Files

  • The GitFiles input section is gone. The Input File section has a
    git_tracked_only option instead. If it is set to true, paths are only
    resolved to files that are tracked in the git repository.
  • The Input.Files section has an optional setting to specify that paths
    are allowed to resolve to 0 files.

Command-Line

New Commands

  • baur status lists all tasks in the repository with their status. It
    replaces the previous baur ls apps command.
  • baur run replaces baur build
  • baur diff shows the difference of the inputs between 2 tasks or recorded
    tasks runs (thanks to @StephenDiligent and @dbrougham).
  • baur upgrade configs: converts configuration files from baur version 0 to
    version 2.
  • baur ls runs replaces baur ls builds

Misc

  • A new syntax for specifying tasks, supported are:
    • a path to an application directory to match all tasks of the application,
    • the name of an application, to match all it's tasks,
    • a string in the format APP.TASK:
      • to reference a specific task of an app, e.g: the build task of the shop
        app: shop.build
      • to reference all tasks of an app or tasks across apllications,
        APP and TASK can be a wildcard:
        • *.build to run tasks named build of all applications,
        • shop.* to run all tasks of an application named shop
  • Input Strings can be specified via the --input-str and --lookup-input-str
    parameters. Input strings are hashed and tracked as inputs of task runs.
    (thanks to @StephenDiligent).
  • baur ls runs got a new query parameter --limit, to limit the number of
    returned results (thanks to @StephenDiligent).
  • baur ls runs got new query parameter --has-input to list all builds that
    have a specific input (thanks to @StephenDiligent).
  • new global parameter --no-color
  • baur ls apps only lists the applications with their paths in the
    repository. It does not show the status anymore.
  • baur ls inputs supports to show the inputs of recorded task runs
  • baur show list the config files (including includes) in that the application
    is defined
  • baur show also prints the directory of the application

OS Support

  • baur is build and tested on Windows, Windows binaries are provided
    (thanks to @StephenDiligent).
  • Release binaries for Darwin (MacOS)/ARM64 are provided

Misc

  • Support for variables in configuration files is replaced with full support for
    go templating (thanks to @kostyay).
    Go templating syntax can be used in the values of configuration fields.
    Further information can be found in the
    Wiki.
  • The command of a task is executed directly and not run via the sh shell.
  • The command in the application config is specified as a string list
    instead of a single string.
  • Multiple RegistryUpload sections can be defined per Output.DockerImage
  • Multiple S3Upload and Filecopy sections can be defined per Output.File
  • The S3Upload.dest_file field is renamed to key
  • Environment variables can be referenced in configs via {{ env VARNAME }}