mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-09-25 01:53:03 +02:00
Add a test environment that simulates a blank Debian trixie box (systemd + sshd container) and routes the project's real 📦 Linting CSS + JS (biome)… Checked 71 files in 140ms. No fixes applied. 📦 Building CSS bundles… 🎨 Building CSS bundles… ✓ base.min.css (22,317 bytes) ✓ admin.min.css (55,602 bytes) ✓ form.min.css (41,855 bytes) ✓ public.min.css (4,310 bytes) ✓ tfe.min.css (9,089 bytes) ✓ repertoire.min.css (13,166 bytes) ✓ content-page.min.css (3,683 bytes) ✓ not-found.min.css (672 bytes) ✓ system.min.css (7,408 bytes) ✓ file-access.min.css (3,733 bytes) ✓ form-base.min.css (19,110 bytes) ✓ partage-form.min.css (37,229 bytes) ✅ CSS bundles done — 218,174 bytes total 📦 Building JS bundles… 📦 Building JS bundles… ✓ admin.min.js (60,911 bytes) ✓ public.min.js (22,022 bytes) ✓ form.min.js (41,547 bytes) ✓ partage.min.js (42,441 bytes) ✅ JS bundles done ✅ Build complete 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=461/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=458/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=411/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=411/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=401/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=360/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=325/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=319/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=309/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=302/469) 0 0% 0.00kB/s 0:00:00 (xfr#0, to-chk=280/469) 700 0% 0.00kB/s 0:00:00 55,602 1% 52.36MB/s 0:00:00 (xfr#1, to-chk=265/469) 55,602 1% 52.36MB/s 0:00:00 (xfr#1, to-chk=250/469) 116,513 2% 110.45MB/s 0:00:00 (xfr#2, to-chk=264/469) 138,830 2% 131.73MB/s 0:00:00 (xfr#3, to-chk=263/469) 142,513 2% 135.24MB/s 0:00:00 (xfr#4, to-chk=262/469) 146,246 2% 138.80MB/s 0:00:00 (xfr#5, to-chk=261/469) 165,356 2% 157.03MB/s 0:00:00 (xfr#6, to-chk=260/469) 207,211 3% 196.94MB/s 0:00:00 (xfr#7, to-chk=259/469) 248,758 4% 236.57MB/s 0:00:00 (xfr#8, to-chk=258/469) 249,430 4% 237.21MB/s 0:00:00 (xfr#9, to-chk=257/469) 286,659 5% 272.71MB/s 0:00:00 (xfr#10, to-chk=256/469) 329,100 5% 313.19MB/s 0:00:00 (xfr#11, to-chk=255/469) 333,410 6% 317.30MB/s 0:00:00 (xfr#12, to-chk=254/469) 355,432 6% 338.30MB/s 0:00:00 (xfr#13, to-chk=253/469) 368,598 6% 350.85MB/s 0:00:00 (xfr#14, to-chk=252/469) 376,006 6% 357.92MB/s 0:00:00 (xfr#15, to-chk=251/469) 385,095 6% 366.59MB/s 0:00:00 (xfr#16, to-chk=250/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=250/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=235/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=230/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=193/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=192/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=189/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=156/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=156/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=147/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=135/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=134/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=129/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=120/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=93/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=78/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=77/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=71/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=71/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=64/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=43/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=39/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=34/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=33/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=25/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=8/469) 385,095 6% 2.96MB/s 0:00:00 (xfr#16, to-chk=0/469) 📋 Deploying nginx configuration… xamxam.conf sent 145 bytes received 125 bytes 540.00 bytes/sec total size is 10,012 speedup is 37.08 deploy-server.sh sent 1,089 bytes received 107 bytes 797.33 bytes/sec total size is 8,519 speedup is 7.12 recipes to it via safe ssh/rsync shims, so setup scripts can be validated without touching production. Includes provision-server-packages.sh, setup.sh/teardown.sh, server Dockerfile + helper, and the rendered ssh config. Validated end-to-end against the box: - provisioning (apt nginx, php8.4-fpm, composer), - scripts/setup-server.sh (group/user/dir bootstrap), - just deploy-code (transfer; surfaced the deploy-code --chown regression).
84 lines
2.9 KiB
Bash
Executable File
84 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Host-side bootstrap for the XAMXAM podman test environment.
|
|
#
|
|
# 1. Generates a throwaway test SSH keypair in test-env/keys/.
|
|
# 2. Builds + starts the `server` (Debian trixie systemd ssh container).
|
|
# 3. Installs the public key into the server's `deploy` user and gives that
|
|
# user passwordless sudo (so the just deploy recipes' `sudo` calls run
|
|
# unattended — see README for the password option).
|
|
# 4. Renders test-env/ssh/config — an SSH config that routes the `xamxam` alias
|
|
# to the podman box, used only by the `just test-env-run` recipes.
|
|
#
|
|
# Run from the host (repo root):
|
|
# just test-env-up # == test-env/scripts/setup.sh
|
|
# test-env/scripts/setup.sh
|
|
# test-env/scripts/setup.sh --rebuild
|
|
#
|
|
set -euo pipefail
|
|
|
|
cd "$(cd "$(dirname "$0")/.." && pwd)" # -> test-env/
|
|
KEYS_DIR="$PWD/keys"
|
|
KEY="$KEYS_DIR/xamxam-test_ed25519"
|
|
PUBKEY="$KEY.pub"
|
|
SSH_CONF="$PWD/ssh/config"
|
|
DEPLOY_USER="deploy"
|
|
PORT="22022"
|
|
|
|
mkdir -p "$KEYS_DIR" "$PWD/ssh"
|
|
|
|
if [ ! -f "$KEY" ]; then
|
|
echo "▶ Generating throwaway test SSH keypair…"
|
|
ssh-keygen -t ed25519 -N '' -C "xamxam-test" -f "$KEY" -q
|
|
chmod 600 "$KEY"
|
|
echo "✓ $KEY"
|
|
fi
|
|
|
|
echo "▶ Building images…"
|
|
if [ "${1:-}" = "--rebuild" ]; then
|
|
podman compose build --no-cache
|
|
else
|
|
podman compose build
|
|
fi
|
|
|
|
echo "▶ Starting server (systemd container)…"
|
|
podman compose up -d server
|
|
|
|
# systemd containers don't always order sshd at boot (no real network manager);
|
|
# start it explicitly so the host ssh can connect.
|
|
podman compose exec -T server systemctl start ssh 2>/dev/null || true
|
|
|
|
echo "▶ Waiting for sshd inside server…"
|
|
for i in $(seq 1 30); do
|
|
if podman compose exec -T server bash -c 'pgrep -x sshd >/dev/null' 2>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
echo "▶ Installing public key + deploy user with passwordless sudo…"
|
|
PUB="$(cat "$PUBKEY")"
|
|
podman compose exec -T server /usr/local/bin/helper add-key "$PUB" "xamxam"
|
|
|
|
echo "▶ Rendering $SSH_CONF…"
|
|
sed -e "s|{{PORT}}|$PORT|g" \
|
|
-e "s|{{DEPLOY_USER}}|$DEPLOY_USER|g" \
|
|
-e "s|{{KEYFILE}}|$KEY|g" \
|
|
ssh/config.template > "$SSH_CONF"
|
|
chmod 600 "$SSH_CONF"
|
|
|
|
echo
|
|
echo "✓ Test environment is up."
|
|
echo
|
|
echo " ssh to the box : ssh -p $PORT -i $KEY $DEPLOY_USER@127.0.0.1"
|
|
echo " test SSH config: $SSH_CONF (used only by the shim)"
|
|
echo
|
|
echo "Now drive the real just recipes on the HOST via the test-env-run shim:"
|
|
echo " just test-env-run # just deploy"
|
|
echo " just test-env-run recipe=provision-server-packages # apt installs"
|
|
echo " just test-env-run recipe=setup-server # role/dirs"
|
|
echo " just test-env-run recipe=deploy-nginx # nginx"
|
|
echo " just test-env-run recipe=deploy-db"
|
|
echo " just test-env-run recipe=provision-server # full chain"
|
|
echo
|
|
echo "See test-env/README.md for the full matrix of what each step validates."
|