README
ibuilder is a cli based builder of docker images. It provides an interface for building and pushing the image, signing images, as well as for tagging source code after build with a build version and other common image tasks.
Latest Changes
- package updates: arrow, click, packaging, pydantic, rich, typer
NOTICES
- version 1.0.0+ requires python 3.11+ (for internal toml processing capabilities and its fast)
Features
- build: build docker images
- push: push images to any container registry
- sign: sign images for container signing and verification
- source control: tag and push when you build an image
- history: retain build history for quick/easy access to past build info
- quick/easy: create an
ibuilder.tomlfile and runib build -i minorto build, push, commit to source control and sign a new image
Requirements
- python 3.11+
- docker: docker must be set up as it is used to build and push the image
- git: (optional) if you use the source-tag feature you will need git installed and your code setup in git (it simply performs a git tag && git push from the working directory)
- image signor: (optional) if you choose to sign images a signor (such as cosign) is needed
Overview
- setup (see #setup)
- configure (see #configure): place a copy of the
example/.ibuilder.tomlin the same directory as your Dockerfile of the app you want to build and adjust it as needed - run (see #run): execute ibuilder to build/push/tag a version of your app, its as simple as
ib build
Install
We recommend using pipx to install ibuilder: pipx install ibuilder. You can also install via pip: pip install --user ibuilder.
Setup
ibuilder uses a config file to store your setup. Each 'app' you build with ibuilder expects this file to be in the 'root' of the app that you are building. This file contains information such as whether to build, push, tag the image, labels to apply, Dockerfile to use, etc. You can grab an example config file from ibuilder/example/.ibuilder.toml.
Configure
- create a project config file
- place a copy of the
example/.ibuilder.tomlfile in your project (same directory as your Dockerfile) and configure as needed
- place a copy of the
Features
If you create an arg with the name "BUILD_VERSION" its value will be replaced with the build version of the current build. This can be used to pass the build version from ibuilder into your docker environment.
Run
- basic run:
ib build --version=1.2.3- the above command assumes there is a
.ibuilder.tomlin the current working directory which happens to be in the same directory as the Dockerfile which you wish to build
- the above command assumes there is a
- change logging level:
LOG_LEVEL=DEBUG ib build...- standard python log levels supported: CRITICAL|ERROR|WARNING|INFO|DEBUG (default is INFO)
View help with
ib --helpor see help for a specific command:ib build --help.
- standard python log levels supported: CRITICAL|ERROR|WARNING|INFO|DEBUG (default is INFO)
View help with
Recommendations
We recommend using docker's configuration storage for reg_auth-* related configuration items as it encrypts sensitive information and is likely already configured (if you have already used docker login). If you leave the remaining items empty the default values will be used. This will then try $HOME/.docker/config.json and $HOME/.dockercfg for your docker config settings. If you do not already have a docker config run docker login and it should be created for you. After a successful login you should not need to do anything else for the application as the needed info will be stored in your dockercfg and the app will use it when needed.
If you are signing your images you may want to set the COSIGN_PASSWORD environment variable in your ~/.bashrc or equivalent shell config file to avoid being prompted for your signing password after build and push. It should be noted that you will be prompted twice (if you are pushing both the build version and the latest tag of this version) as ib signs both tags of the built image. To avoid this we recommend setting the COSIGN_PASSWORD environment variable but please ensure you understand the security implications of doing so.
Legacy
This project originally started under the name boi - builder of images and as such you may find references to boi and even backward support for boi (e.g. local history database, user config file, etc.).
Links
Metadata
Release files for ibuilder 3.11.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 | Provenance | Actions |
|---|---|---|---|---|
| ibuilder-3.11.0.tar.gz | 98.8 kB | Without provenance | Details for ibuilder-3.11.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ibuilder-3.11.0-py3-none-any.whl | Python 3 | none | any | Details for ibuilder-3.11.0-py3-none-any.whl |
Total release size: 129.7 kB
Release files / ibuilder-3.11.0.tar.gz
| Download URL | ibuilder-3.11.0.tar.gz |
|---|---|
| Size | 98.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83dbd53ee530da2e48683e3d7d90e4e88db2704e41d1152e36b4e7bfed4b1434
|
|
BLAKE2b-256 checksum How to use checksums |
5494ca0baef38bc935b3bad291bee45940eaf39b5bf1326a25d0a4df42f34ef3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.5
|
Release files / ibuilder-3.11.0-py3-none-any.whl
| Download URL | ibuilder-3.11.0-py3-none-any.whl |
|---|---|
| Size | 30.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c881aee91874763178304a2d65e8166e5e8a400af447d02a7291ada4c84b7d9
|
|
BLAKE2b-256 checksum How to use checksums |
45f47b21b6c987fa9fe558580a757775f13615d43bd79e55c1c42e89dfab2965
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.5
|
Security for ibuilder 3.11.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.