fix: deploy via Docker-in-Docker with host-mounted nexus path
Runner job containers don't have the /workspace/nexus mount. - Sync code to host path using a docker run helper (preserves .env) - Build & deploy from host path using docker:cli image - Health check with retry loop for slow container startup
This commit is contained in:
@@ -70,6 +70,20 @@ jobs:
|
|||||||
git push "https://devops:${{ secrets.GIT_TOKEN }}@git.noveria.net/bao/nexus.git" HEAD:main --tags
|
git push "https://devops:${{ secrets.GIT_TOKEN }}@git.noveria.net/bao/nexus.git" HEAD:main --tags
|
||||||
echo "✅ Version bumped to v${NEW_VERSION}"
|
echo "✅ Version bumped to v${NEW_VERSION}"
|
||||||
|
|
||||||
|
- name: Sync code to host deploy path
|
||||||
|
run: |
|
||||||
|
docker run --rm \
|
||||||
|
-v "${{ gitea.workspace }}:/src:ro" \
|
||||||
|
-v /opt/openclaw/data/openclaw/workspace/nexus:/dest \
|
||||||
|
alpine:latest \
|
||||||
|
sh -c "
|
||||||
|
cd /src && \
|
||||||
|
find . -mindepth 1 -maxdepth 1 \
|
||||||
|
! -name .git \
|
||||||
|
! -name .env \
|
||||||
|
-exec cp -a {} /dest/ \;
|
||||||
|
"
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
run: docker buildx create --use 2>/dev/null || true
|
run: docker buildx create --use 2>/dev/null || true
|
||||||
|
|
||||||
@@ -80,23 +94,37 @@ jobs:
|
|||||||
BUILD_ARGS="--no-cache"
|
BUILD_ARGS="--no-cache"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "${{ inputs.service }}" ]; then
|
docker run --rm \
|
||||||
echo "🚀 Deploying service: ${{ inputs.service }}"
|
-v /opt/openclaw/data/openclaw/workspace/nexus:/workspace/nexus \
|
||||||
docker compose build $BUILD_ARGS ${{ inputs.service }}
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
docker compose up -d --force-recreate ${{ inputs.service }}
|
-w /workspace/nexus \
|
||||||
else
|
docker:cli \
|
||||||
echo "🚀 Deploying all services"
|
sh -c "
|
||||||
docker compose build $BUILD_ARGS
|
set -e
|
||||||
docker compose up -d --force-recreate
|
if [ -n '${{ inputs.service }}' ]; then
|
||||||
fi
|
echo '🚀 Deploying service: ${{ inputs.service }}'
|
||||||
|
docker compose build $BUILD_ARGS \${{ inputs.service }}
|
||||||
|
docker compose up -d --force-recreate \${{ inputs.service }}
|
||||||
|
else
|
||||||
|
echo '🚀 Deploying all services'
|
||||||
|
docker compose build $BUILD_ARGS
|
||||||
|
docker compose up -d --force-recreate
|
||||||
|
fi
|
||||||
|
"
|
||||||
|
|
||||||
- name: Health Check
|
- name: Health Check
|
||||||
run: |
|
run: |
|
||||||
sleep 5
|
sleep 5
|
||||||
echo "🏥 Health check..."
|
echo "🏥 Health check..."
|
||||||
curl -sf --max-time 30 --retry 3 --retry-delay 5 https://nexus.noveria.net/health || echo "⚠️ Health check failed (may need more time)"
|
for i in 1 2 3 4 5 6; do
|
||||||
echo ""
|
if curl -sf --max-time 10 https://nexus.noveria.net/health; then
|
||||||
docker compose ps
|
echo ""
|
||||||
|
echo "✅ Health check passed"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "⏳ Retry $i/6..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
- name: Verify (smoke test)
|
- name: Verify (smoke test)
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
Reference in New Issue
Block a user