From eb52c2ac41c7dca8a8f08440f5b88ae93765df9e Mon Sep 17 00:00:00 2001 From: Ramon Date: Mon, 27 Jul 2026 00:18:55 +0200 Subject: [PATCH] ci: expliciete cd in plaats van working-directory, en de deploy-map loggen .env verschijnt niet in de deploy-map en BIND moet nog steeds in docker-compose.yml worden aangepast. De stappen die .env aanmaken, VERSION schrijven en compose draaien vertrouwden alle drie op 'working-directory:'. Wordt dat door de runner niet toegepast, dan belanden die bestanden in de werkmap van de runner en draait de container vanaf de compose daar - terwijl de rsync (die een expliciet pad gebruikt) wel netjes naar /opt/docker/server-up schrijft. Dat verklaart precies wat er gemeld wordt. - Alle stappen doen nu 'cd "$DEPLOY_DIR"' in het script zelf. - De run-log toont de werkmap, de inhoud van .env, de compose-projectmap volgens de draaiende container en de daadwerkelijke poortbinding. Daarmee is in de log te zien waar alles landt in plaats van het te moeten raden. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01C7oLCRYzY5ixJ5Sv8Y8EFb --- .forgejo/workflows/deploy-prod.yml | 26 +++++++++++++++++------ .forgejo/workflows/deploy.yml | 34 +++++++++++++++++++++++------- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/.forgejo/workflows/deploy-prod.yml b/.forgejo/workflows/deploy-prod.yml index 764f420..8feb37a 100644 --- a/.forgejo/workflows/deploy-prod.yml +++ b/.forgejo/workflows/deploy-prod.yml @@ -70,13 +70,18 @@ jobs: ./ "$DEPLOY_DIR/" - name: Schrijf VERSION-bestand - working-directory: ${{ env.DEPLOY_DIR }} - run: echo "${VERSION}" > VERSION - - - name: Bouwen (en pushen naar de registry) - working-directory: ${{ env.DEPLOY_DIR }} run: | set -euo pipefail + # Expliciet cd in plaats van 'working-directory:'; dat laatste wordt + # niet door elke runner even betrouwbaar toegepast. + cd "$DEPLOY_DIR" + echo "${VERSION}" > VERSION + echo "Werkmap: $(pwd)" + + - name: Bouwen (en pushen naar de registry) + run: | + set -euo pipefail + cd "$DEPLOY_DIR" # SU_TAG vastleggen zodat compose en de "Nu bijwerken"-knop in de app # naar hetzelfde image wijzen (zie docs/updates.md). # @@ -90,7 +95,8 @@ jobs: touch .env sed -i '/^SU_TAG=/d' .env echo "SU_TAG=${VERSION}" >> .env - echo "Actieve instellingen:"; grep -vE '^\s*(#|$)' .env | sed 's/^/ /' + echo "Inhoud van $(pwd)/.env:" + grep -vE '^\s*(#|$)' .env | sed 's/^/ /' # Draait deze server vanaf de registry (SU_IMAGE in .env), dan bouwen # we hier én pushen we het resultaat, zodat de in-app updateknop het @@ -119,11 +125,17 @@ jobs: fi - name: Deploy - working-directory: ${{ env.DEPLOY_DIR }} run: | set -euo pipefail + cd "$DEPLOY_DIR" docker compose up -d --remove-orphans docker compose ps + echo "Compose-projectmap volgens de container:" + docker inspect server-up \ + --format ' {{index .Config.Labels "com.docker.compose.project.working_dir"}}' + echo "Poortbinding:" + docker inspect server-up \ + --format ' {{range $p, $c := .NetworkSettings.Ports}}{{$p}} -> {{range $c}}{{.HostIp}}:{{.HostPort}}{{end}}{{"\n"}}{{end}}' - name: Wachten op healthcheck run: | diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index c53196f..2a60c36 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -69,14 +69,18 @@ jobs: --exclude='.env' \ ./ "$DEPLOY_DIR/" - - name: Schrijf VERSION-bestand - working-directory: ${{ env.DEPLOY_DIR }} - run: echo "${VERSION}" > VERSION - - - name: Build image - working-directory: ${{ env.DEPLOY_DIR }} + - name: Instellingen en versie klaarzetten run: | set -euo pipefail + # Expliciet cd in plaats van 'working-directory:'. Dat laatste wordt + # niet door elke runner-implementatie even betrouwbaar toegepast, en + # als het misgaat belanden VERSION, .env en de container stilletjes in + # de werkmap van de runner in plaats van in de deploy-map. + cd "$DEPLOY_DIR" + echo "Werkmap: $(pwd)" + + echo "${VERSION}" > VERSION + # De dev-server bouwt altijd zelf vanaf de dev-branch. SU_TAG vastleggen # zodat compose exact het zojuist gebouwde image start. # @@ -91,16 +95,30 @@ jobs: touch .env sed -i '/^SU_TAG=/d' .env echo "SU_TAG=${VERSION}" >> .env - echo "Actieve instellingen:"; grep -vE '^\s*(#|$)' .env | sed 's/^/ /' + + echo "Inhoud van $(pwd)/.env:" + grep -vE '^\s*(#|$)' .env | sed 's/^/ /' + + - name: Build image + run: | + set -euo pipefail + cd "$DEPLOY_DIR" docker compose build --pull docker tag "server-up:${VERSION}" "server-up:${CHANNEL}" || true - name: Deploy - working-directory: ${{ env.DEPLOY_DIR }} run: | set -euo pipefail + cd "$DEPLOY_DIR" docker compose up -d --remove-orphans docker compose ps + # Waar draait de container vandaan, en op welk adres luistert hij? + echo "Compose-projectmap volgens de container:" + docker inspect server-up \ + --format ' {{index .Config.Labels "com.docker.compose.project.working_dir"}}' + echo "Poortbinding:" + docker inspect server-up \ + --format ' {{range $p, $c := .NetworkSettings.Ports}}{{$p}} -> {{range $c}}{{.HostIp}}:{{.HostPort}}{{end}}{{"\n"}}{{end}}' - name: Wachten op healthcheck run: |