Set up this repo as a base image registry. Each image is self-contained in
its own directory under images/ (Dockerfile + README.md + optional test.sh);
CI discovers them by glob, so adding an image needs no workflow changes.
template/ is the skeleton to copy.
The Makefile is the single entry point for both local work and CI, so a green
`make all` locally means a green pipeline.
Workflows:
* lint.yaml — layout check, hadolint, shellcheck
* build.yaml — diffs against the base commit to build only the images that
changed, smoke-tests each one before anything is published, then pushes.
Releases are per-image tags (<image>/vX.Y.Z); main publishes :edge.
First image, node-agent: node:22-alpine plus a GNU userland (Alpine ships
BusyBox, whose applets take narrower flags than scripts and models expect),
helm, kubectl, jq, yq, bind-tools, curl, git, ripgrep, fd and friends.
Nothing is version-pinned — rebuilding is how upstream updates land, and the
published tag is what pins things for consumers.
Its smoke test asserts the deployment contract as well as tool presence: the
image must work non-root, with a read-only root filesystem and all
capabilities dropped, which is how ToolHive runs it.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
33 lines
559 B
Markdown
33 lines
559 B
Markdown
# CHANGEME
|
|
|
|
One or two sentences: what this image is for, and who pulls it.
|
|
|
|
```
|
|
gitea.libretechconsulting.com/rmcguire/CHANGEME
|
|
```
|
|
|
|
## Contents
|
|
|
|
Base: `alpine:3`
|
|
|
|
| Group | Tools |
|
|
| ----- | ----- |
|
|
| Shell | `bash` |
|
|
|
|
## Environment
|
|
|
|
| Variable | Value | Why |
|
|
| -------- | ----- | --- |
|
|
| | | |
|
|
|
|
## Usage
|
|
|
|
```sh
|
|
docker run --rm -it gitea.libretechconsulting.com/rmcguire/CHANGEME:latest
|
|
```
|
|
|
|
## Notes
|
|
|
|
Anything a consumer would otherwise trip over — required capabilities, writable
|
|
paths, credentials the image expects to be mounted.
|