diff --git a/.forgejo/workflows/e2e-check.yml b/.forgejo/workflows/e2e-check.yml new file mode 100644 index 0000000..15a5ce3 --- /dev/null +++ b/.forgejo/workflows/e2e-check.yml @@ -0,0 +1,39 @@ +name: E2E check +# Branche jetable ci/e2e-check : determine si le workspace du job est aligne cote hote +# (les bind-mounts des conteneurs freres sont resolus par le demon de l'hote). Le verdict +# est ecrit dans un volume Docker nomme `e2e_diag` pour relecture sur le runner. A supprimer. +# Pas de set -e : on veut ecrire le verdict meme si une etape intermediaire echoue. +on: + push: + branches: ['ci/e2e-check'] + +jobs: + check: + runs-on: docker + steps: + - uses: actions/checkout@v4 + - name: Verdict d'alignement -> volume e2e_diag + run: | + curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-27.3.1.tgz -o /tmp/d.tgz && tar -xzf /tmp/d.tgz -C /usr/local/bin --strip-components=1 docker/docker + LOG=/tmp/diag.txt + { + echo "date=$(date -u +%FT%TZ)" + echo "docker_version=$(docker --version 2>&1)" + echo "GITHUB_WORKSPACE=[$GITHUB_WORKSPACE]" + echo "PWD=[$(pwd)]" + echo "DOCKER_HOST=[${DOCKER_HOST:-}]" + echo "socket=$(ls -la /var/run/docker.sock 2>&1)" + echo "docker_info=$(docker info --format '{{.ServerVersion}}' 2>&1)" + echo "--- mountinfo (work) ---" + grep -iE 'work' /proc/self/mountinfo 2>&1 || echo "(aucune ligne work)" + echo "--- marqueur ---" + echo "ALIGN_TOKEN_42" > "${GITHUB_WORKSPACE}/__align_marker" 2>&1 + echo "write_marker_rc=$?" + got=$(docker run --rm -v "${GITHUB_WORKSPACE}:/x" alpine sh -c 'cat /x/__align_marker 2>/dev/null' 2>&1) + echo "marker_read=[$got]" + if [ "$got" = "ALIGN_TOKEN_42" ]; then echo "VERDICT=PATH_ALIGNED"; else echo "VERDICT=PATH_NOT_ALIGNED"; fi + } > "$LOG" 2>&1 + cat "$LOG" + docker volume create e2e_diag >/dev/null 2>&1 + docker run --rm -i -v e2e_diag:/out alpine sh -c 'cat > /out/result.txt' < "$LOG" + echo "(verdict ecrit dans le volume e2e_diag)"