Welcome to abuild
When I was looking for a build tool for a (fairly simple) monorepo, I noticed that although there are many great ones, they all require considerable setup or they only work with one particular language. I was rather looking for a basic build tool that needs almost no setup and can handle a handful services in one repository with some frontend, some backend and maybe a bit of machine learning code.
My goals for this project are
- Setting up abuild for a simple setup should be (almost) no effort.
- Code that hasn't changed shouldn't be re-build (that's kind of the point of a build tool).
- If I write a service in a different language, I should be able to use the same build tool.
To do this, abuild acts as a glue between existing language specific tools—in that
sense calling it a "build tool" might almost be promising too much. It's rather a build tool
manager for monorepos.
Getting started
You can install abuild from pypi with pip install abuild.
This example looks at a very simple monorepo with a python backend that gets build into a docker container and a javascript frontend that gets build with npm run build. There is also a tools directory that shouldn't be build:
$ tree
.
|-- backend
| |-- Dockerfile
| -- tox.ini |-- frontend | -- package.json
`-- tools
3 directories, 3 files
To set up abuild in a new monorepo, you can run
$ abuild parse > abuild.yaml $ cat abuild.yaml components:
- path: backend
steps:
- cmd: tox
- cmd: docker buildx build .
- path: frontend
steps:
- cmd: npm run test
- cmd: npm run build
As you can see, abuild understood the basics of the repository and created the skeleton of a config file. Feel free to update the config file by hand. For example, you could add names for the steps by setting components.[].steps.[].name. You could also delete (or add) steps to fit your needs.
To build your services with abuild, you simply run abuild build in your project root. abuild maintains a state file .abuild_state.json that tracks your build status. Currently, the state is not synchronized between machines (which can be a bit of a hindrance of CI). However, you can commit the .abuild_state.json to your revision control system.
Changelog
v0.2.0
New features
- general:
- Basic support for tags
- support for deselecting tags
v0.3.0
New features
- General: directory parsing supports makefiles
Metadata
Release files for abuild 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| abuild-0.3.0.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| abuild-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.6 kB
Release files / abuild-0.3.0.tar.gz
| Download URL | abuild-0.3.0.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0cbba26cd44aef8ab0ede9a7237d271a7160b97883f8955fccea3ddb54989e13
|
|
BLAKE2b-256 checksum How to use checksums |
3572990002dfac49f44bcae69d7232d14889ddc4e9d13b9f9e9b782225f25720
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.4
|
Release files / abuild-0.3.0-py3-none-any.whl
| Download URL | abuild-0.3.0-py3-none-any.whl |
|---|---|
| Size | 8.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
069002514bf083d29302c5bd8ed15920102174bd10d8851d19da10499ecce1aa
|
|
BLAKE2b-256 checksum How to use checksums |
fbf05fba1894d27f6a80a0b7be7e1ba5cf75e79503e95311f6f96c269fcc42e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.4
|