base-images/CONTRIBUTING.md
John Eckersberg 1666da21eb Justfile: match MintMaker's self-hosted settings in renovate target
- Allow the shell executor for post-upgrade commands so
  pipeline-migration-tool can expand $RENOVATE_POST_UPGRADE_COMMAND_DATA_FILE,
  and match MintMaker's execution timeout.
- Set ignorePrAuthor so on-demand runs see and update the bot's MRs.
- Disable the Dependency Dashboard for on-demand runs, since Renovate
  only finds dashboards created by the token's user and would otherwise
  create a duplicate.

Document the Commit Status: Create token permission (needed for branch
statuses) and MR ownership caveats in CONTRIBUTING.md.

Signed-off-by: John Eckersberg <dev@eckersberg.com>
2026-10-30 15:38:44 -04:00

4.6 KiB

Contributing to fedora-bootc base images

Prerequisites

Everything revolves around our Containerfile, but there's a high level wrapper in Justfile which you should use. So installing podman (or buildah) and just are strongly recommended.

Building and testing

Run just --list to see available targets and just show-config to see current settings. The Justfile is also what CI invokes, so anything you run locally is the same as what runs in the pipeline.

Configuration is via environment variables — see the comments at the top of the Justfile for the full list. For example:

just build                                    # defaults
TIER=minimal just build                       # different tier
FEDORA_VERSION=43 just test                   # different Fedora version
BUILDER=podman just build                     # use podman instead of buildah
just ci                                       # full CI run (validate + test all tiers)

Building a split image

The Containerfile supports building a split (content-based layered) image using chunkah via the chunked build target:

just build --chunkah

Extra arguments can be passed to chunkah via the CHUNKAH_ARGS build arg (e.g. BUILDER_EXTRA='--build-arg CHUNKAH_ARGS="--max-layers 128"' just build --chunkah).

Running Renovate on demand

Dependency update MRs are created by Renovate running in Konflux (MintMaker). It runs on a cluster-wide schedule (roughly every 4 hours, with a 4 hour lookup cache; the Tekton manager only runs on Saturdays), and cannot be triggered early from this repository — ticking Dependency Dashboard checkboxes only takes effect on the next scheduled run.

just renovate runs Renovate yourself, using the same container image and global configuration as MintMaker, with the schedule restrictions removed.

Creating a GitLab token

Create a fine-grained personal access token: avatar → Edit profile → Access → Personal access tokens → Generate token → Fine-grained token.

  • Set a short expiration date.
  • Under Group and project access, choose Selected memberships and select the fedora/bootc group (or just the fedora/bootc/base-images project, plus your fork if you want to test against it).
  • Add the following permissions:
Tab Category Resource Permissions
Group and project Projects Project Read
Group and project Repository Code Download, Push
Group and project Repository Repository Read
Group and project Repository Branch Read, Create, Delete
Group and project Repository Commit Read, Create
Group and project Repository Merge Request Read, Create, Update, Merge
Group and project Project Planning Work Item Read, Create, Update
Group and project Project Planning Label Read
Group and project CI/CD Pipeline Read
Group and project CI/CD Commit Status Create
User System Access User Read
Global System Access Metadata Read

Export the token as RENOVATE_TOKEN. Optionally, export a GitHub token (no extra permissions needed, created at https://github.com/settings/tokens) as RENOVATE_GITHUB_COM_TOKEN to avoid GitHub API rate limits when fetching shared presets.

Running

just renovate --dry-run                       # preview only, nothing is pushed
just renovate                                 # push branches and open/update MRs
LOG_LEVEL=debug just renovate --dry-run       # include full update details
just renovate --dry-run jeckersb/base-images  # run against a fork

Commits and MRs will be authored by the token's user rather than the konflux bot. They use the same branches as the bot (konflux/mintmaker/* and renovate/fedora-*/*), so no duplicate MRs are created. On-demand runs update the bot's existing MRs, but the bot only tracks MRs it created itself, so any new MR opened by an on-demand run stays yours until it is merged or closed. On-demand runs never create or update the Dependency Dashboard.