From a7220ddb2bc95e817e53c71cb0422565dd3c8fbf Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 6 Jul 2026 10:55:58 -0500 Subject: [PATCH] =?UTF-8?q?fix(ci):=20robust=20prod=20deploy=20=E2=80=94?= =?UTF-8?q?=20drop=20dev-health=20gate,=20no=20tier-clobbering=20sed,=20rm?= =?UTF-8?q?=20-f=20before=20recreate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The prod deploy (deploy-mokogitea.yml, on push to main) failed the #733 release and silently corrupted the shared compose. Three fixes: - Removed the 'Verify dev environment is healthy' gate: it curled git.dev and exit 1 on failure, so a dev blip false-negatives the PROD deploy (wrong-tier gate; the dev->rc->main pipeline + RC env is the real gate). - Replaced 'sed s|mokogitea:...|:$TAG|' (matched ALL mokogitea service lines and clobbered the dev+rc ${MOKOGITEA_*_TAG} env-vars with the prod tag) with the env-var pattern: env $TAG_ENV=$TAG docker compose up -- drives only the target service, no sed. - Added 'docker rm -f $CONTAINER' + '-p gitea-dev' + '--force-recreate' before the compose up, fixing the 'Container name /mokogitea already in use' conflict. Aligns deploy-mokogitea.yml with the fixed deploy-dev/deploy-rc pattern. Host compose was separately restored to env-var form (the bad run had clobbered dev+rc tags). Long-term: cut over Template-Go#5 deploy-prod.yml. Refs #733, #752. Claude-Session: https://claude.ai/code/session_01Wsno14cxE49MstXFs9G5KT --- .../workflows/custom/deploy-mokogitea.yml | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.mokogitea/workflows/custom/deploy-mokogitea.yml b/.mokogitea/workflows/custom/deploy-mokogitea.yml index 43a36f598d..0af8f78ca3 100644 --- a/.mokogitea/workflows/custom/deploy-mokogitea.yml +++ b/.mokogitea/workflows/custom/deploy-mokogitea.yml @@ -39,17 +39,10 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - name: Verify dev environment is healthy - run: | - echo "Checking git.dev.mokoconsulting.tech health..." - if curl -sf --max-time 10 https://git.dev.mokoconsulting.tech/api/healthz; then - echo " Dev environment is healthy — proceeding with production deploy" - else - echo "::error::Dev environment is NOT healthy — blocking production deploy" - echo "Deploy to dev first (push to dev branch) and verify it passes before merging to main." - exit 1 - fi - + # NOTE: removed a "Verify dev environment is healthy" gate that curled + # git.dev and `exit 1` on failure — gating a PROD deploy on a live DEV + # health check is a cross-tier false-negative (a transient dev blip blocked + # prod). Pre-prod validation is the dev -> rc -> main pipeline + RC env. - name: Checkout source (for version detection) uses: actions/checkout@v4 with: @@ -66,17 +59,19 @@ jobs: ENV="${{ github.event.inputs.environment }}" fi if [ "$ENV" = "production" ]; then - echo "compose_dir=/opt/gitea" >> $GITHUB_OUTPUT + echo "compose_dir=/opt/gitea-dev" >> $GITHUB_OUTPUT echo "container=mokogitea" >> $GITHUB_OUTPUT echo "source_dir=/opt/gitea/source" >> $GITHUB_OUTPUT echo "branch=main" >> $GITHUB_OUTPUT echo "tag=$VERSION" >> $GITHUB_OUTPUT + echo "tag_env=MOKOGITEA_TAG" >> $GITHUB_OUTPUT else echo "compose_dir=/opt/gitea-dev" >> $GITHUB_OUTPUT echo "container=mokogitea-dev" >> $GITHUB_OUTPUT echo "source_dir=/opt/gitea-dev/source" >> $GITHUB_OUTPUT echo "branch=dev" >> $GITHUB_OUTPUT echo "tag=$VERSION-dev" >> $GITHUB_OUTPUT + echo "tag_env=MOKOGITEA_DEV_TAG" >> $GITHUB_OUTPUT fi - name: Write deploy key @@ -95,6 +90,7 @@ jobs: SOURCE_DIR: ${{ steps.config.outputs.source_dir }} COMPOSE_DIR: ${{ steps.config.outputs.compose_dir }} CONTAINER: ${{ steps.config.outputs.container }} + TAG_ENV: ${{ steps.config.outputs.tag_env }} run: | HEALTH_FMT='${{ '{{' }}.State.Health.Status${{ '}}' }}' IMAGE_FMT='Image: ${{ '{{' }}.Config.Image${{ '}}' }}' @@ -134,8 +130,12 @@ jobs: echo 'Restarting container...' cd $COMPOSE_DIR - sed -i 's|${{ env.IMAGE }}:[^ ]*|${{ env.IMAGE }}:$TAG|' docker-compose.yml - docker compose up -d $CONTAINER + # Drive ONLY the target service's tag via its compose env-var (no sed — + # a blanket 'sed s|mokogitea:...|' clobbered the dev + rc service tags too). + # Remove any lingering fixed-name container first (avoids the "name already + # in use" conflict), then force-recreate under the shared compose project. + docker rm -f $CONTAINER 2>/dev/null || true + env $TAG_ENV="$TAG" docker compose -p gitea-dev up -d --force-recreate $CONTAINER echo 'Health check...' for i in 1 2 3 4 5 6 7 8; do