diff --git a/.forgejo/workflows/lint-and-build.yml b/.forgejo/workflows/lint-and-build.yml index 473a134..e77c365 100644 --- a/.forgejo/workflows/lint-and-build.yml +++ b/.forgejo/workflows/lint-and-build.yml @@ -1,4 +1,4 @@ -name: Lint and Build +name: Lint, Build, and Docker on: push: @@ -95,15 +95,49 @@ jobs: run: cargo build --release --verbose # ============================================================================== - # NOTE: Docker build disabled due to DNS/network issues with DinD services - # - # The Forgejo runner creates temporary networks for each job, causing - # DNS resolution issues when trying to connect to DinD services. - # - # Docker builds should be done separately: - # - Locally: docker build -f backend/docker/Dockerfile -t normogen-backend:latest - # - On Solaria: Use deployment scripts in docs/deployment/ - # - # Future solution: Configure Forgejo runner with Docker-in-Docker properly - # or use a container registry with proper BuildKit support. + # Job 4: Docker Build with Buildx - Using runs-on: docker without container # ============================================================================== + docker-build: + runs-on: docker + # No container - should have direct Docker access + needs: [build] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Verify Docker is available + run: | + docker version + docker info + + - name: Set up Docker Buildx + run: | + docker buildx version + docker buildx create --use --name builder + docker buildx inspect --bootstrap + + - name: Build Docker image with Buildx + working-directory: ./backend + run: | + docker buildx build \ + --file docker/Dockerfile \ + --tag normogen-backend:${{ github.sha }} \ + --tag normogen-backend:latest \ + --cache-from type=local,src=/tmp/.buildx-cache \ + --cache-to type=local,dest=/tmp/.buildx-cache-new,mode=max \ + --load \ + . + + # Rotate cache + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache || true + + - name: Test Docker image + run: | + docker run --rm normogen-backend:${{ github.sha }} ls -la /app/normogen-backend || echo "Binary check" + + - name: Show image info + run: | + docker images normogen-backend + docker inspect normogen-backend:${{ github.sha }} || echo "Image inspect"