diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 53b1165..7be7d2a 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -13,32 +13,8 @@ env: IMAGE: forgejo.riotpiao.com/rock/poimen-memory jobs: - test: - name: Test - runs-on: rust - steps: - - name: Install Node.js for actions runtime - run: apt-get update && apt-get install -y nodejs - - - name: Checkout code - uses: actions/checkout@v4 - - - name: Get short SHA - id: sha - run: | - SHORT_SHA=$(git rev-parse --short HEAD) - echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT - - - name: Cargo test - run: cargo test -p mem-ingest --lib 2>&1 | tail -50 || true - - - name: Cargo check - run: cargo check -p mem-ingest 2>&1 | tail -20 || true - - build-push: - name: Build & Push Image - needs: test - if: github.event_name == 'push' && github.ref == 'refs/heads/main' + ci: + name: CI runs-on: rust steps: - name: Install Node.js and Docker @@ -55,10 +31,21 @@ jobs: SHORT_SHA=$(git rev-parse --short HEAD) echo "short_sha=${SHORT_SHA}" >> $GITHUB_OUTPUT + - name: Cargo test + run: cargo test -p mem-ingest --lib 2>&1 | tail -50 || true + + - name: Cargo check + run: cargo check -p mem-ingest 2>&1 | tail -20 || true + - name: Pre-verify Docker and Registry + if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | - echo "=== Docker Setup Verification ===" - echo "✓ Docker daemon available" + echo "=== Docker Daemon Check ===" + if ! docker version &>/dev/null; then + echo "❌ FAILED: Docker daemon not accessible" + exit 1 + fi + echo "✓ Docker daemon is running" docker version --format "Engine: {{.Server.Version}}" echo "" echo "=== Registry Credentials Check ===" @@ -68,6 +55,14 @@ jobs: fi echo "✓ Registry credentials are set" echo "" + echo "=== Registry Login Test ===" + if ! echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" --username "${REGISTRY_USER}" --password-stdin &>/dev/null; then + echo "❌ FAILED: Registry login failed - credentials may be invalid" + exit 1 + fi + echo "✓ Registry login successful" + docker logout "${REGISTRY}" &>/dev/null || true + echo "" echo "=== Dockerfile Check ===" if [ ! -f Dockerfile ]; then echo "❌ FAILED: Dockerfile not found" @@ -75,16 +70,13 @@ jobs: fi echo "✓ Dockerfile exists" echo "" - echo "=== Image Tag Check ===" - echo "✓ IMAGE will be: ${IMAGE}:${{ steps.sha.outputs.short_sha }}" - echo "✓ Latest will be: ${IMAGE}:latest" - echo "" echo "=== All pre-checks passed ===" env: REGISTRY_USER: ${{ secrets.FORGEJO_REGISTRY_USER }} REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }} - name: Registry login + if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | echo "${REGISTRY_TOKEN}" | docker login "${REGISTRY}" \ --username "${REGISTRY_USER}" --password-stdin @@ -93,6 +85,7 @@ jobs: REGISTRY_TOKEN: ${{ secrets.FORGEJO_REGISTRY_TOKEN }} - name: Build Docker image + if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | docker build --no-cache \ -t "${IMAGE}:${{ steps.sha.outputs.short_sha }}" \ @@ -101,10 +94,12 @@ jobs: . - name: Push Docker image + if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | docker push "${IMAGE}:${{ steps.sha.outputs.short_sha }}" docker push "${IMAGE}:latest" echo "✓ Image pushed: ${IMAGE}:${{ steps.sha.outputs.short_sha }}" - name: Prune unused images + if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: docker image prune -a --force 2>&1 | tail -3 || true