feat: publish CodexPi contest snapshot
Some checks are pending
Qualité / tests (push) Waiting to run

This commit is contained in:
CodexPi
2026-11-14 20:23:59 +01:00
commit 995b17a6e2
295 changed files with 36803 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env bash
set -euo pipefail
BASE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
UNIT_DIR="$BASE/deploy/systemd"
UNITS=(codexpi.service codexpi-docker-access.service codexpi-docker-access.timer)
if [[ "$BASE" != "/home/config/CodexPi" ]]; then
echo "Installation refusée hors du répertoire de production /home/config/CodexPi" >&2
exit 1
fi
for unit in "${UNITS[@]}"; do
if [[ ! -f "$UNIT_DIR/$unit" ]]; then
echo "Unité CodexPi introuvable: $UNIT_DIR/$unit" >&2
exit 1
fi
done
command -v docker >/dev/null || { echo "Docker est introuvable" >&2; exit 1; }
command -v sudo >/dev/null || { echo "sudo est requis pour installer les unités systemd" >&2; exit 1; }
command -v systemctl >/dev/null || { echo "systemd est requis pour installer la surveillance Docker" >&2; exit 1; }
"$BASE/scripts/compose.sh" config >/dev/null
codexpi_uid="$(stat -c '%u' "$BASE")"
codexpi_gid="$(stat -c '%g' "$BASE")"
docker_gid="$(stat -c '%g' /var/run/docker.sock)"
if [[ ! "$codexpi_uid" =~ ^[0-9]+$ || ! "$codexpi_gid" =~ ^[0-9]+$ || ! "$docker_gid" =~ ^[0-9]+$ ]]; then
echo "Impossible de déterminer les groupes numériques de CodexPi et Docker" >&2
exit 1
fi
# Prefer the host group name so systemd resolves its current GID again after a
# Docker package update. A numeric GID remains a valid fallback on hosts where
# the socket group has no entry in /etc/group.
docker_group="$(getent group "$docker_gid" 2>/dev/null | cut -d: -f1 || true)"
docker_group="${docker_group:-$docker_gid}"
if [[ ! "$docker_group" =~ ^[a-zA-Z0-9_.-]+$ ]]; then
echo "Nom de groupe Docker invalide: $docker_group" >&2
exit 1
fi
generated_units="$(mktemp -d)"
trap 'rm -rf -- "$generated_units"' EXIT
for unit in "${UNITS[@]}"; do
sed \
-e "s/__CODEXPI_UID__/$codexpi_uid/g" \
-e "s/__CODEXPI_GID__/$codexpi_gid/g" \
-e "s/__DOCKER_GROUP__/$docker_group/g" \
"$UNIT_DIR/$unit" >"$generated_units/$unit"
sudo install -o root -g root -m 0644 "$generated_units/$unit" "/etc/systemd/system/$unit"
done
sudo systemctl daemon-reload
sudo systemctl enable codexpi.service
sudo systemctl enable --now codexpi-docker-access.timer
sudo systemctl start --no-block codexpi-docker-access.service
echo "Démarrage et auto-réparation de l’accès Docker activés. Aucun redémarrage du Pi n'a été effectué."
echo "Compte CodexPi: UID $codexpi_uid, GID $codexpi_gid ; groupe Docker: $docker_group ($docker_gid)."
echo "Pour démarrer immédiatement la pile: sudo systemctl start codexpi.service"