Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/simplesurance/baur
An incremental task runner for mono repositories.
https://github.com/simplesurance/baur
baur build ci golang monorepo
Last synced: 17 days ago
JSON representation
An incremental task runner for mono repositories.
- Host: GitHub
- URL: https://github.com/simplesurance/baur
- Owner: simplesurance
- License: gpl-2.0
- Created: 2018-04-18T08:37:07.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2024-05-22T16:51:33.000Z (about 1 month ago)
- Last Synced: 2024-05-22T17:02:58.007Z (about 1 month ago)
- Topics: baur, build, ci, golang, monorepo
- Language: Go
- Homepage:
- Size: 16.5 MB
- Stars: 337
- Watchers: 12
- Forks: 10
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-stars - baur
- awesome-monorepo - baur
- awesome-stars - baur
- awesome-stars - simplesurance/baur - baur is an incremental task runner for mono repositories. (Go)
README
# baur [![Go Report Card](https://goreportcard.com/badge/github.com/simplesurance/baur)](https://goreportcard.com/report/github.com/simplesurance/baur)
## About
baur is an incremental task runner for [monolithic Git
repositories](https://en.wikipedia.org/wiki/Monorepo). \
It can be used in CI environments to build, check and test only applications
that changed in a commit.Practical usage examples of baur can be found in the [example
repository](https://github.com/simplesurance/baur-example).### How it works
Per application tasks are defined in a [TOML](https://github.com/toml-lang/toml)
configuration file. Each task specifies:* a command to run,
* which inputs (files) affect the result of the task run
* and optionally outputs that are created when the command is run and where
those artifacts are uploaded to.When baur runs a task, it calculates a digest for the task inputs and stores it
in a PostgreSQL database. \
On following runs, baur only runs tasks for which the inputs changed.### Key Features
* **Running Tasks only for Changed Applications** \
Tasks define which inputs affect the result of the task execution. \
baur can only runs tasks that have not been run before for the current set of
inputs.
\
Inputs can be defined as
[glob file patterns](https://en.wikipedia.org/wiki/Glob_(programming)),
environment variables, as strings on the commandline, or as Go package
queries.* **Artifact Upload** \
Artifacts can be uploaded to **S3** buckets, to **Docker** registries or
simply copied to another directory in the **filesystem**.* **Application Management** \
baur can be used as management tool in monorepositories to query basic
information about applications and upload destinations for specific builds.* **CI Optimized** \
baur is made to be run in CI environments and supports to output information
in the easily-parseable CSV and JSON formats.* **Configuration File Includes** \
Tasks, Inputs and Output definitions that are shared between tasks can be
defined in include configuration files.* **Templating** \
[Templating](https://github.com/simplesurance/baur/wiki/v2-Configuration#templating-in-configuration-files)
can be used in configuration files.## Quickstart
### Installation
#### From a Release
The recommended way is to download the latest released version from the [release
page](https://github.com/simplesurance/baur/releases). \
Official releases are provided for Linux, macOS and Windows.After downloading the release archive, extract the `baur` binary
(`tar xJf baur-OS_ARCH-VERSION.tar.xz`) and move it to your preferred location.#### From Source
You can build and install the latest version from the main branch by running:
```sh
go install github.com/simplesurance/baur/v3/...@main
```### Setup
baur uses a PostgreSQL database to record information about past task runs. The
quickest way to setup a PostgreSQL for local testing is with docker:```sh
docker run -p 127.0.0.1:5432:5432 -e POSTGRES_DB=baur -e POSTGRES_HOST_AUTH_METHOD=trust postgres:latest
```Afterwards you create your baur repository configuration file.
In the root directory of your Git repository run:```sh
baur init repo
```The command will print instructions how to initialize your database and create
your first application configuration file.### First Steps
To show information about the available commands run:
```sh
baur --help
```Some commands to start with are:
| command | action |
|:--------------------------------------|------------------------------------------------------------------------------------------------------|
| `baur status` | List task in the repository with their build status |
| `baur run` | Run all tasks of all applications with pending builds, upload their artifacts and records the result |
| `baur ls runs all` | List recorded tasks |
| `baur show currency-service` | Show information about an application called *currency-service* |
| `baur ls inputs --digests shop.build` | List inputs with their digests of the *build* task of an application called *shop* |
| `baur run --help` | Show the usage information for the *run* command. |## Documentation
Documentation is available in the [wiki](https://github.com/simplesurance/baur/wiki).
## Upgrading from older baur Versions
See [Upgrade Instructions in the wiki](https://github.com/simplesurance/baur/wiki#upgrade-guide)
## Versioning
baur follows [Semantic Versioning](https://semver.org/) for its command line
interface, configuration file format and database schema. \
The APIs of the Go packages are **excluded** from the semantic versioning policy.
Their APIs may change at any time in a backward incompatible manner.## Contributing
We are happy to receive Pull Requests for baur. \
If you like to contribute a non-trivial change, it is recommended to outline the
idea before in the [Ideas forum](https://github.com/simplesurance/baur/discussions/categories/ideas).## Contact
* Questions? - [Q&A Forum](https://github.com/simplesurance/baur/discussions/categories/q-a)
* Suggestion for a cool feature or other improvements? - [Ideas Forum](https://github.com/simplesurance/baur/discussions/categories/ideas)## Links
* [Example Repository](https://github.com/simplesurance/baur-example)
* [Wiki](https://github.com/simplesurance/baur/wiki)