Metadata-Version: 2.4
Name: posit-bakery
Version: 0.4.0
Summary: CLI for building, testing, and managing multidimensional container images with variant, version, and OS support.
Project-URL: Homepage, https://posit-dev.github.io/images-shared/
Project-URL: Documentation, https://posit-dev.github.io/images-shared/
Project-URL: Repository, https://github.com/posit-dev/images-shared
Project-URL: Issues, https://github.com/posit-dev/images-shared/issues
Project-URL: Changelog, https://github.com/posit-dev/images-shared/releases
Author-email: "Ian H. Pittwood" <ian.pittwood@posit.co>, Ben Schwedler <ben@posit.co>
Maintainer-email: Posit Container Team <docker@posit.co>
License-Expression: MIT
License-File: LICENSE.md
Keywords: bake,build,buildx,cli,container,docker,image,posit
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Software Distribution
Requires-Python: >=3.10
Requires-Dist: gitpython~=3.1.50
Requires-Dist: jinja2~=3.1.6
Requires-Dist: packaging<26.0,>=25.0
Requires-Dist: pydantic[email]<3.0,>=2.0
Requires-Dist: pygithub<3.0.0,>=2.8.1
Requires-Dist: python-on-whales<0.80.0,>=0.79.0
Requires-Dist: requests-cache<2.0.0,>=1.2.1
Requires-Dist: requests<3.0.0,>=2.32.5
Requires-Dist: rich~=14.1.0
Requires-Dist: ruamel-yaml<0.19.0,>=0.18.14
Requires-Dist: typer~=0.21.1
Description-Content-Type: text/markdown

<p>
<a href="https://posit.co/">
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://cdn.posit.co/platform/containers/logos/Posit-Logos-2024_horiz-reverse-quarto-web.svg">
  <source media="(prefers-color-scheme: light)" srcset="https://cdn.posit.co/platform/containers/logos/Posit-Logos-2024_horiz-full-color-quarto-web.svg">
  <img alt="Posit Logo" src="https://cdn.posit.co/platform/containers/logos/Posit-Logos-2024_horiz-full-color-quarto-web.svg" height="120">
</picture>
</a>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://posit-dev.github.io/images-shared/">
<img alt="bakery" src="docs/images/bakery-logo.svg" height="180">
</a>
</p>

# Bakery

The [bakery](./posit_bakery/) command line interface (CLI) binds together various [tools](#3rd-party-tools) to manage a matrixed build of container images.

## Documentation

Full documentation is available at **[posit-dev.github.io/images-shared](https://posit-dev.github.io/images-shared/)**.

## Prerequisites

* [python](https://docs.astral.sh/uv/guides/install-python/)
* [uv](https://docs.astral.sh/uv/getting-started/installation/)
* [docker buildx bake](https://github.com/docker/buildx#installing)
* [just](https://just.systems/man/en/prerequisites.html)

### 3rd Party Tools

| Tool                                                                                                                                                                      | Used By                         | Purpose                                                            |
|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------|:-------------------------------------------------------------------|
| [docker buildx bake](https://github.com/docker/buildx#installing)                                                                                                         | `bakery build --strategy bake`  | Build containers in parallel                                       |
| [docker](https://github.com/docker/buildx#installing), [podman](https://podman-desktop.io/docs/installation), or [nerdctl](https://github.com/containerd/nerdctl#install) | `bakery build --strategy build` | Build containers in series                                         |
| [dgoss](https://github.com/goss-org/goss#installation)                                                                                                                    | `bakery run dgoss`              | Test container images for expected content & behavior              |
| [hadolint](https://github.com/hadolint/hadolint#install)                                                                                                                  | to be implemented               | Lint Dockerfile/Containerfile                                      |
| [openscap](https://static.open-scap.org/)                                                                                                                                 | to be implemented               | Scan container images for secure configuration and vulnerabilities |
| trivy                                                                                                                                                                      | to be implemented               | Scan container images for vulnerabilities                          |
| wizcli                                                                                                                                                                     | to be implemented               | Scan container images for vulnerabilities                          |

## Installation

Install `bakery` from [PyPI](https://pypi.org/project/posit-bakery/) using `uv tool`:

```bash
uv tool install posit-bakery
```

To install an unreleased development version directly from GitHub:

```bash
uv tool install 'git+https://github.com/posit-dev/images-shared.git@main#subdirectory=posit-bakery&egg=posit-bakery'
```

## Examples

See the [Bakery Examples](https://github.com/posit-dev/images-examples/tree/main/bakery) repository for step-by-step tutorials on creating and managing container image projects with Bakery.

## Development

### Development Prerequisites

- [just](https://just.systems/man/en/)

    ```bash
    # Show all the just recipes
    just
    ```

- [uv](https://docs.astral.sh/uv/getting-started/installation/)
