Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbach 029024326d fix(web-app-snipe-it): make admin creation idempotent by checking user existence
Replace fragile is_admin-based admin check with a username-based existence
check and switch from shell to argv-based command execution to avoid shell
expansion issues. This prevents duplicate users_groups inserts on repeated
runs and fixes failures on second deployment runs.

https://chatgpt.com/share/698259da-c990-800f-a491-3dc8cc7376f8
2026-02-03 21:25:58 +01:00
kevinveenbirkenbach 6658e27d73 Updated names 2026-02-03 20:39:59 +01:00
kevinveenbirkenbach f1b5d2b764 Ruff 2026-02-03 20:21:58 +01:00
kevinveenbirkenbach 0ca8448b30 ci: hard-clean Docker state between distro deploys
- remove host-mounted INFINITO_DOCKER_VOLUME between runs
- recreate docker data dir to avoid cross-distro state leakage
- keep images while fully resetting containers, networks and volumes
- ensure clean CI environment for each distro deploy
2026-02-03 20:06:36 +01:00
kevinveenbirkenbach f188fac7bf ci: replace distro shuffle with single random distro selection
- select exactly one random distro per push
- pass single distro to ci-orchestrator
- add clear CI job names with emojis

https://chatgpt.com/share/69823c91-fccc-800f-ae3e-ad50a85f3fe5
2026-02-03 19:37:32 +01:00
kevinveenbirkenbach 7ba9b158d2 refactor(make,release): rely on env.sh for runtime vars and fix shell escaping
- Switch Makefile commands from make vars to shell env vars ($$VAR)
- Ensure PYTHON and INFINITO_* are always resolved via scripts/meta/env.sh
- Fix build-no-cache-all to use env-provided DISTROS safely
- Remove redundant env forwarding in install targets
- Load env.sh robustly in promote-stable.sh with ShellCheck-safe handling
- Fix Python invocation in promote-stable.sh to use env-resolved PYTHON

No functional behavior change intended.

https://chatgpt.com/share/69820891-2238-800f-ad70-bae7e442c028
2026-02-03 16:01:48 +01:00
kevinveenbirkenbach 81ddadc2d2 refactor(env): centralize runtime environment in scripts/meta/env.sh (SPOT)
- Move all environment detection, defaults, and exports into scripts/meta/env.sh
- Use BASH_ENV in Makefile to auto-source env.sh for all recipes
- Remove duplicated env logic from Makefile (VENV, PYTHON, CI detection, inventory)
- Make env setup safe under set -euo pipefail (-u compatible)
- Ensure consistent behavior across local, act, and GitHub Actions runs

No functional behavior change intended.

https://chatgpt.com/share/69820891-2238-800f-ad70-bae7e442c028
2026-02-03 15:39:03 +01:00
kevinveenbirkenbach 308326ae75 ci(push): shuffle distro order for push pipeline
- Add a shuffle-distros job to randomize distro execution order
- Pass shuffled distros to ci-orchestrator instead of hardcoded arch
- Improve load distribution across arch, debian, ubuntu, fedora, centos
- Keep concurrency semantics unchanged

https://chatgpt.com/share/69820309-ac04-800f-b4ae-d2eba93c956d
2026-02-03 15:15:24 +01:00
kevinveenbirkenbach 0c9c8277d5 feat(ci): shuffle distros before deploy to improve fairness under time budget
- Randomize distro execution order in all_distros.sh
- Log final execution order for easier debugging

https://chatgpt.com/share/6981f7e4-590c-800f-a6df-15557ce73a86
2026-02-03 14:37:45 +01:00
kevinveenbirkenbach c75a823391 feat(ci): enforce global time budget for multi-distro deploys
- Track runtime per distro during CI deploy runs
- Add MAX_TOTAL_SECONDS env to limit total execution time
- Skip remaining distros if remaining budget is smaller than the slowest prior run
- Print warnings and a detailed timing summary at the end
- Wire time budget via Makefile for ci-deploy-app

https://chatgpt.com/share/6981f7e4-590c-800f-a6df-15557ce73a86
2026-02-03 14:27:59 +01:00
kevinveenbirkenbach 5c0a86b8a7 Merge branch 'feature/self-signed-tls' into feature/finalize-tests 2026-02-03 12:33:14 +01:00
kevinveenbirkenbach 01e18a52a8 Removed async because it isn't allowed at build-in script 2026-02-03 12:31:56 +01:00
kevinveenbirkenbach 9555d65858 Removed log logic from ci 2026-02-03 12:28:45 +01:00
kevinveenbirkenbach 9344a11c18 fix(ci-cleanup): use array-safe container removal to satisfy ShellCheck
- Replace word-splitting container ID handling with bash array
- Avoid SC2086 by passing container IDs as "${ids[@]}"
- Preserve correct behavior for multiple containers in CI cleanup

https://chatgpt.com/share/6981c7d4-642c-800f-8438-9e2349ac53fb
2026-02-03 11:05:15 +01:00
kevinveenbirkenbach bc38347798 refactor(ci-deploy): split per-distro deploy, add two-pass async test and hard cleanup
- Replace legacy app.sh/distros.sh orchestration with explicit all_distros.sh + dedicated_distro.sh
- Deploy each app sequentially across distros against a fresh stack
- Run two deploy passes per distro:
  - Pass 1 with ASYNC_ENABLED=false
  - Pass 2 with ASYNC_ENABLED=true against the same stack
- Remove deprecated cli.deploy.development run orchestrator
- Extend init command with --vars to inject inventory overrides
- Enforce debug mode for CI deploys
- Add hard Docker cleanup after each distro (containers, networks, volumes, build cache; keep images)
- Emit disk and docker usage before and after deploy for observability

https://chatgpt.com/share/6981c7d4-642c-800f-8438-9e2349ac53fb
2026-02-03 11:02:51 +01:00
kevinveenbirkenbach 7092caf7fb ci(concurrency): isolate CI concurrency per repo and branch
Previously all CI entry workflows shared a single global
concurrency group, blocking parallel runs across branches.
This scopes concurrency to repository + branch.

https://chatgpt.com/share/6981bad4-e1cc-800f-bef9-15f10ff6f7e5
2026-02-03 10:07:15 +01:00
kevinveenbirkenbach db127ec5ed Updated todo 2026-02-03 09:59:27 +01:00
kevinveenbirkenbach 970c0c8e50 ci(mirror): disable default throttling for only-missing workflow
- Remove default images_per_hour value for mirror-images-missing
- Avoid unintended throttling

https://chatgpt.com/share/698160fa-f39c-800f-a645-c6fbf533b9f8
2026-02-03 03:44:07 +01:00
kevinveenbirkenbach f52426a58b Solved typo 2026-02-03 02:49:42 +01:00
kevinveenbirkenbach fddc5330b6 fix(ci): fail mirror workflows when image sync fails
Remove continue-on-error from mirror jobs and steps so the workflow
correctly fails when skopeo image mirroring reports errors.

https://chatgpt.com/share/69814760-6940-800f-bad7-0e653c352fff
2026-02-03 01:54:48 +01:00
kevinveenbirkenbach 5baa995c32 refactor(web-app-shopware): separate builder container image from Shopware release package
- Use a dedicated builder container image (composer:2.7) for Shopware setup
- Move Shopware release definition to docker.services.shopware.package
- Update Dockerfile to reference container image/version and package name/version explicitly
- Align vars with clear CONTAINER vs PKG naming for better semantics and maintainability

https://chatgpt.com/share/6981466d-6ec0-800f-848f-fa768ec7a821
2026-02-03 01:50:39 +01:00
dependabot[bot] 856efd4e59 build(deps): bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 00:45:16 +00:00
kevinveenbirkenbach 64b902fcbf Updated image and version to make it mirror compatible 2026-02-03 01:38:43 +01:00
kevinveenbirkenbach c0cd4b8eda feat(ci,mirror): add branch-scoped mirror of missing images and gate deploys on it
- Introduce reusable workflow `mirror-images-missing.yml` to mirror only missing
  Docker Hub images to GHCR using `--only-missing`
- Scope mirror concurrency per branch using `github.ref_name`
- Rename full mirror workflow to `mirror-images-all.yml` for clarity
- Integrate missing-image mirror into CI orchestrator and gate server/universal
  deploys on successful mirror completion
- Add tag existence checks via `skopeo inspect` to avoid redundant uploads
- Keep mirror runs best-effort to avoid blocking CI on transient registry issues

https://chatgpt.com/share/698141e9-0844-800f-9c4f-fecd468ede73
2026-02-03 01:31:30 +01:00
kevinveenbirkenbach baa8e33944 Use correct image for phpLDAPadmin 2026-02-03 00:34:07 +01:00
kevinveenbirkenbach 8b8f340348 Optimized README.md 2026-02-03 00:24:52 +01:00
kevinveenbirkenbach f5be1d6ccd Release version 1.0.0 v1.0.0 2026-02-03 00:19:44 +01:00
kevinveenbirkenbach 97fb176cb1 Merge pull request #58 from kevinveenbirkenbach/feature/self-signed-tls
Feature/self signed tls
2026-02-03 00:13:21 +01:00
kevinveenbirkenbach 9a84fafec5 feat(inventory): add mirror_policy to control mirror image overrides
- Default policy (if_missing): manual image/version win, mirror fills blanks only
- Add mirror_policy=force to always overwrite image/version
- Add mirror_policy=skip to ignore mirror completely
- Treat empty/whitespace values as missing
- Preserve non-image/version service keys
- Extend unit tests to cover all mirror policy scenarios

https://chatgpt.com/share/6981036a-7e40-800f-b43e-13c66cc55fac
2026-02-02 21:04:53 +01:00
kevinveenbirkenbach 734f013179 ci: wire GHCR mirror envs into deploy workflows and inventory init
- Add required GHCR mirror environment variables to CI workflows
- Generate mirrors.yml during development inventory init on CI
- Introduce mirrors helper module with strict env validation
- Minor formatting cleanup in mirror providers
`

https://chatgpt.com/share/6980ff2e-8f18-800f-85e1-79d56a2027f5
2026-02-02 20:46:41 +01:00
kevinveenbirkenbach 9e1792c6ad chore(ci): remove GHCR publish-to-public step from mirror workflow
https://chatgpt.com/share/6980fc3e-2f98-800f-913d-bab61e2fa831
2026-02-02 20:34:09 +01:00
kevinveenbirkenbach 7faf87cc68 fix(mirror): remove invalid skopeo flag and add recompress fallback for GHCR
- drop unsupported --dest-no-reuse-blobs flag
- add retry with forced recompression to avoid GHCR blob reuse errors
- print skopeo stdout/stderr on failure for easier debugging

https://chatgpt.com/share/6980f7ca-2aa0-800f-ae64-60081aa88f1c
2026-02-02 20:14:49 +01:00
kevinveenbirkenbach db8107a933 Removed deprecated test_deprecated_version_key 2026-02-02 20:12:05 +01:00
kevinveenbirkenbach 13f7a5f318 Solved falsy container name 2026-02-02 19:49:40 +01:00
kevinveenbirkenbach a0f791fc52 web-app-taiga: run migrations before admin creation
https://chatgpt.com/share/6980ee3c-2e8c-800f-92aa-63b19d971eb2
2026-02-02 19:34:02 +01:00
kevinveenbirkenbach 3fca3afb37 Addapted syncope variables 2026-02-02 18:50:07 +01:00
kevinveenbirkenbach e580af9130 refactor(oauth2-proxy): move image/version into docker.services and update compose templates
https://chatgpt.com/share/6980e289-d0ac-800f-bf70-b83a33c5aa38
2026-02-02 18:44:36 +01:00
kevinveenbirkenbach 2b73a7a3e1 refactor(libretranslate): move image/version to docker.services and use service-based compose template
- Define LibreTranslate image and version under docker.services.libretranslate
- Replace generic application image lookup with explicit service-based variables
- Align docker-compose template with standardized service naming

https://chatgpt.com/share/6980dff8-34c8-800f-92cb-c97a3033698d
2026-02-02 18:33:38 +01:00
kevinveenbirkenbach 5d9e161d55 refactor(friendica): align service/image config and unify FRIENDICA_* variables
- Move Friendica image/version into docker.services.friendica
- Replace legacy friendica_* vars with FRIENDICA_* namespace
- Make compose service name configurable via FRIENDICA_SERVICE
- Unify addon handling and IAM flags (OIDC / LDAP)
- Fix env boolean rendering for FRIENDICA_NO_VALIDATION

https://chatgpt.com/share/6980de90-2f5c-800f-8387-10e0f8612782
2026-02-02 18:27:40 +01:00
kevinveenbirkenbach c8870ec8dd Solved missing variable bug 2026-02-02 18:08:25 +01:00
kevinveenbirkenbach 8abc94412e nextcloud: remove misleading version flag and obsolete update docs
- Drop deprecated `version: production` config entry (release channel handled elsewhere)
- Remove outdated Update.md with manual docker-compose instructions
- Avoid confusion between release channels and image versions

https://chatgpt.com/share/6980d92d-d584-800f-bdf9-a0fa98d81fce
2026-02-02 18:04:33 +01:00
kevinveenbirkenbach 0a46d3037e refactor(pgadmin): align config with docker.services.pgadmin and entity-based compose naming
- Move pgAdmin image, version, server_mode, and master_password_required
  into docker.services.pgadmin
- Switch docker-compose service and container name to entity_name
- Introduce PGADMIN_* variables and use them consistently across templates
- Update file ownership variables to PGADMIN_USER / PGADMIN_GROUP
- Keep server JSON and pgpass mounts conditional on PGADMIN_SERVER_MODE

https://chatgpt.com/share/6980d836-44e8-800f-acdb-2ec3aac8e761
2026-02-02 18:00:32 +01:00
kevinveenbirkenbach 4e766a212b Solved image names 2026-02-02 17:39:33 +01:00
kevinveenbirkenbach a70a033864 feat(inventory): add --mirror support to override docker images from mirrors file
- add --mirror flag to inventory creator
- resolve mirrors.yml automatically or via explicit path
- apply mirror overrides to applications.*.docker.services.* (image/version only)
- keep existing host_vars keys untouched
- add unit tests for mirror override behavior

https://chatgpt.com/share/6980cdb1-1e5c-800f-b25f-a1af757e4239
2026-02-02 17:15:30 +01:00
kevinveenbirkenbach 5e5a960bd8 test(integration): validate docker.services image/version syntax in role configs
Add a unittest-based integration test that scans all roles/*/config/main.yml
and validates docker.services.*.image and *.version only when present.
Ensures allowed Docker image name and tag characters without enforcing
image/version coupling.

https://chatgpt.com/share/6980cd2d-0644-800f-9e1f-0c8daa98e85c
2026-02-02 17:13:18 +01:00
kevinveenbirkenbach 647e93ff18 mirror: disable blob reuse for skopeo copy to GHCR
https://chatgpt.com/share/6980c6ff-3a6c-800f-8c95-6acdbfebfbfd
2026-02-02 16:47:04 +01:00
kevinveenbirkenbach e1b9d66c00 Pass test_backup_no_stop_required_consistency for discourse 2026-02-02 16:29:33 +01:00
kevinveenbirkenbach 4949b45f44 feat(mirror): add rate-limited image sync with concurrency protection
- add optional --images-per-hour throttle to mirror sync
- enforce safe default (50 images/hour) in CI
- prevent overlapping mirror runs via workflow concurrency
- make workflow robust for schedule, dispatch, and workflow_call
- fix GHCR namespace fallback to repository owner

https://chatgpt.com/share/6980be4f-d5d4-800f-a9ad-2aaba637897e
2026-02-02 16:09:57 +01:00
kevinveenbirkenbach d1cf6b72f4 feat(mirror): publish mirrored GHCR images as public via release script
- add post-mirror step to set GHCR package visibility to public
- extract publish logic into scripts/release/ghcr_make_public.sh
- ensure repo-root handling is robust via explicit cd
- keep publish step best-effort while mirror sync can fail
2026-02-02 15:56:01 +01:00
kevinveenbirkenbach e7fdaa1d10 fix(mirror): iterate all images and fail at end on mirror errors
- mirror sync now continues on individual skopeo failures
- collect and summarize failed images
- return non-zero exit code only after all images were processed
- make GitHub workflow respect mirror sync exit status

https://chatgpt.com/share/6980b558-5fdc-800f-911e-48bbc35a461f
2026-02-02 15:45:27 +01:00