- Root scripts to run the tool container:
run.sh(main),run2.sh(shim torun.sh),run-dev.sh,run_all.sh. - Docker image definition in
Dockerfile; supporting entrypoint and helpers inentrypoint.sh,utils.sh,update_bashrc,update-motd.sh. - Installation scripts for packaged tools in
scripts/(invoked byrun_all.shorpkg_add); package manifest inscripts/packages.tsv. - User utilities and backups in
home/,backup/, andlogs/(mounted by run scripts). Version tracked inversion. - Python backup helper lives at
src/backup.py.
make build [TAG=vX.Y.Z]: build the Docker imagemarioaugustorama/devops-toolswith the current version/tag.make push [TAG=...]: push the built image to the registry.make tag-latest: tag the current build aslatestand push.make run [TAG=...]: run the container usingrun.sh.pkg_add list|status|install ...: manage tool installations inside the image at runtime.
- Shell scripts:
bash,set -euo pipefailpreferred; keep scripts idempotent and retry-friendly for network downloads. - Python: prefer standard library, small functions; use explicit exits on errors (
sys.exit). - File naming: scripts under
scripts/arekebab-case.sh; package names match the script basename and manifest entries. - Keep comments minimal and clarifying (why, not what).
- No formal test suite; validate builds with
make buildand runtime sanity viapkg_add listandpkg_add install --allinside the container. - For backup flow, run
./run.sh backupand check tarball creation underbackup/. - When adding new installer scripts, ensure they succeed when run standalone and are safe to re-run.
- Use clear, imperative commit messages (e.g., “Add pkg_add package manifest”, “Harden backup script”).
- For PRs: describe the change, expected impact on image size/startup, and any manual verification (build command, runtime checks). Link related issues if applicable.
- Keep
STRICT_CHECKSUMenabled (default) during builds to verify downloaded artifacts. - Avoid baking secrets; prefer mounting kubeconfig/credentials at runtime via
run.sh/run2.sh. - When adding new packages, use pinned versions or checksum verification where upstream supports it.