Sign inSign up

prplanit/oh-ci

By prplanit

•Updated 19 days ago

CI helper image with the tooling a pipeline expects preinstalled.

Image
0

1.9K

prplanit/oh-ci repository overview

⁠Oh CI!

Minimal tooling for CI via O(h)CI.

Oh CI is an Alpine based image maintained for bash/sh style CI in a container environment. Just the essentials, like trees, and Pokémon because it is not safe out there in this world if you do not have at least one.

GitHub GitLab license Open Issues Open PRs Contributors donate sponsor

release build Last Commit StageFreight

GHCR Docker pulls Harbor

latest updated size latest-dev updated size


⁠What's Inside

ToolWhy It's Here
bashBecause sh alone is pain
coreutilsThe GNU classics — date, stat, env, friends
curlTalk to things
gettextProvides envsubst — template all the things
gitClone, fetch, diff
jqSpeak JSON fluently
rsyncMove files with grace
treeSee what you're working with
yqLike jq but for YAML
krabbyDisplay Pokémon in your terminal. No, it's not negotiable.

⁠Quick Start

# Run it
docker run --rm -it docker.io/prplanit/oh-ci:latest

# Template a config file from environment variables
docker run --rm \
  -e DB_HOST=postgres.local \
  -e DB_PORT=5432 \
  -v ./template.conf:/template.conf \
  docker.io/prplanit/oh-ci:latest \
  sh -c 'envsubst < /template.conf'

# Greet yourself properly
docker run --rm docker.io/prplanit/oh-ci:latest krabby random

⁠Use Cases

ScenarioExample
K8s init containerRender config templates with envsubst before the app starts
CI pipeline stepClone a repo, jq an API response, rsync artifacts
Config generationSubstitute ${VAR} placeholders in YAML/HCL/TOML files
DebuggingDrop into a pod with actual tools instead of crying into busybox

⁠Kubernetes Init Container Example

initContainers:
  - name: render-config
    image: docker.io/prplanit/oh-ci:latest
    command: ["/bin/sh", "-c"]
    args:
      - envsubst < /template/app.conf > /config/app.conf
    envFrom:
      - secretRef:
          name: app-secrets
    volumeMounts:
      - name: template
        mountPath: /template
      - name: config
        mountPath: /config

⁠Looking For Something Else?

ImageWhat It's For
hlhd/ansible⁠Ansible playbooks, Python, collections, the whole orchestra
prplanit/stagefreight⁠Declarative CI/CD — detect, build, scan, and release container images
alpine/k8s⁠kubectl, helm, and the Kubernetes toolkit

⁠Building

docker build -t prplanit/oh-ci:latest .

⁠License

Distributed under the AGPL-3.0-only⁠ License. See LICENSING.md⁠ for commercial licensing.

Tag summary

Content type

Image

Digest

sha256:5f8a82028…

Size

21.6 MB

Last updated

7 months ago

docker pull prplanit/oh-ci