From 9439185b3dd98382331f33a8303e49585cd357ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Sun, 23 Nov 2025 21:57:14 +0100 Subject: [PATCH] fix: update Docker registry from Docker Hub to dev.pivoine.art - Use Gitea container registry instead of Docker Hub - Update workflow to use gitea.actor and REGISTRY_TOKEN - Update documentation to reflect correct registry URL - Match supervisor-ui workflow configuration --- .gitea/workflows/build-docker-image.yml | 82 +++++++++++++++++++++---- RUNPOD_TEMPLATE.md | 22 ++++--- 2 files changed, 81 insertions(+), 23 deletions(-) diff --git a/.gitea/workflows/build-docker-image.yml b/.gitea/workflows/build-docker-image.yml index 6632f77..c73ad2f 100644 --- a/.gitea/workflows/build-docker-image.yml +++ b/.gitea/workflows/build-docker-image.yml @@ -5,13 +5,23 @@ on: branches: - main tags: - - 'v*' + - 'v*.*.*' pull_request: branches: - main + workflow_dispatch: + inputs: + tag: + description: 'Custom tag for the image' + required: false + default: 'manual' + +env: + REGISTRY: dev.pivoine.art + IMAGE_NAME: valknar/runpod-ai-orchestrator jobs: - build: + build-and-push: runs-on: ubuntu-latest steps: @@ -20,27 +30,41 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + with: + platforms: linux/amd64 - - name: Log in to Docker Hub - if: github.event_name != 'pull_request' + - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} + registry: ${{ env.REGISTRY }} + username: ${{ gitea.actor }} + password: ${{ secrets.REGISTRY_TOKEN }} - name: Extract metadata (tags, labels) id: meta uses: docker/metadata-action@v5 with: - images: ${{ secrets.DOCKER_USERNAME }}/runpod-ai-orchestrator + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | + # Tag as 'latest' for main branch + type=raw,value=latest,enable={{is_default_branch}} + # Tag with branch name type=ref,event=branch + # Tag with PR number type=ref,event=pr + # Tag with git tag (semver) type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} + # Tag with commit SHA type=sha,prefix={{branch}}- - type=raw,value=latest,enable={{is_default_branch}} + # Custom tag from workflow_dispatch + type=raw,value=${{ gitea.event.inputs.tag }},enable=${{ gitea.event_name == 'workflow_dispatch' }} + labels: | + org.opencontainers.image.title=RunPod AI Orchestrator + org.opencontainers.image.description=Minimal Docker template for RunPod deployment with ComfyUI + vLLM orchestration, Supervisor process management, and Tailscale VPN integration + org.opencontainers.image.vendor=valknar + org.opencontainers.image.source=https://dev.pivoine.art/${{ gitea.repository }} - name: Build and push Docker image uses: docker/build-push-action@v5 @@ -48,11 +72,43 @@ jobs: context: . file: ./Dockerfile platforms: linux/amd64 - push: ${{ github.event_name != 'pull_request' }} + push: ${{ gitea.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max + cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache + cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache,mode=max - - name: Image digest - run: echo ${{ steps.meta.outputs.digest }} + - name: Generate image digest + if: gitea.event_name != 'pull_request' + run: | + echo "### Docker Image Published :rocket:" >> $GITEA_STEP_SUMMARY + echo "" >> $GITEA_STEP_SUMMARY + echo "**Registry:** \`${{ env.REGISTRY }}\`" >> $GITEA_STEP_SUMMARY + echo "**Image:** \`${{ env.IMAGE_NAME }}\`" >> $GITEA_STEP_SUMMARY + echo "" >> $GITEA_STEP_SUMMARY + echo "**Tags:**" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + echo "${{ steps.meta.outputs.tags }}" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + echo "" >> $GITEA_STEP_SUMMARY + echo "**Pull command:**" >> $GITEA_STEP_SUMMARY + echo "\`\`\`bash" >> $GITEA_STEP_SUMMARY + echo "docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + echo "" >> $GITEA_STEP_SUMMARY + echo "**Use in RunPod template:**" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + echo "Container Image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + + - name: PR Comment - Image built but not pushed + if: gitea.event_name == 'pull_request' + run: | + echo "### Docker Image Built Successfully :white_check_mark:" >> $GITEA_STEP_SUMMARY + echo "" >> $GITEA_STEP_SUMMARY + echo "Image was built successfully but **not pushed** (PR builds are not published)." >> $GITEA_STEP_SUMMARY + echo "" >> $GITEA_STEP_SUMMARY + echo "**Would be tagged as:**" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY + echo "${{ steps.meta.outputs.tags }}" >> $GITEA_STEP_SUMMARY + echo "\`\`\`" >> $GITEA_STEP_SUMMARY diff --git a/RUNPOD_TEMPLATE.md b/RUNPOD_TEMPLATE.md index 0988702..7f6c230 100644 --- a/RUNPOD_TEMPLATE.md +++ b/RUNPOD_TEMPLATE.md @@ -22,12 +22,12 @@ This approach allows fast pod deployment (~2-3 minutes) while keeping all large ### Option A: Automated Build (Recommended) -The repository includes a Gitea workflow that automatically builds and pushes the Docker image when you push to the `main` branch or create a version tag. +The repository includes a Gitea workflow that automatically builds and pushes the Docker image to your Gitea container registry when you push to the `main` branch or create a version tag. -1. **Configure Gitea Secrets:** +1. **Configure Gitea Secret:** - Go to your Gitea repository → Settings → Secrets - - Add `DOCKER_USERNAME` = your Docker Hub username - - Add `DOCKER_PASSWORD` = your Docker Hub password or access token + - Add `REGISTRY_TOKEN` = your Gitea access token with registry permissions + - (The workflow automatically uses your Gitea username via `gitea.actor`) 2. **Trigger Build:** ```bash @@ -42,7 +42,7 @@ The repository includes a Gitea workflow that automatically builds and pushes th 3. **Monitor Build:** - Go to Actions tab in Gitea - Wait for build to complete (~5-10 minutes) - - Note the Docker image name: `your-username/runpod-ai-orchestrator:latest` + - Note the Docker image name: `dev.pivoine.art/valknar/runpod-ai-orchestrator:latest` ### Option B: Manual Build @@ -53,11 +53,13 @@ If you prefer to build manually: cd /path/to/runpod # Build the image -docker build -t your-username/runpod-ai-orchestrator:latest . +docker build -t dev.pivoine.art/valknar/runpod-ai-orchestrator:latest . -# Push to Docker Hub -docker login -docker push your-username/runpod-ai-orchestrator:latest +# Login to your Gitea registry +docker login dev.pivoine.art + +# Push to Gitea registry +docker push dev.pivoine.art/valknar/runpod-ai-orchestrator:latest ``` ## Step 2: Create Network Volume @@ -98,7 +100,7 @@ Network volumes persist your models and data across pod restarts and rebuilds. **Container Configuration:** - **Template Name**: `AI Orchestrator (ComfyUI + vLLM)` - **Template Type**: Docker - - **Container Image**: `your-username/runpod-ai-orchestrator:latest` + - **Container Image**: `dev.pivoine.art/valknar/runpod-ai-orchestrator:latest` - **Container Disk**: `50GB` (for system and temp files) - **Docker Command**: Leave empty (uses default `/start.sh`)