diff --git a/.drone.yml b/.drone.yml index 9ca145b..56052e6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -16,6 +16,57 @@ volumes: path: /var/run/docker.sock steps: + # ----------------------------------------------------- + # 1. Fetch latest Tags + # ----------------------------------------------------- + - name: fetch-tags + image: docker:24 + volumes: + - name: dockersock + path: /var/run/docker.sock + commands: + - apk add --no-cache git + - git fetch --tags + - | + # Get latest Git tag and trim newline + LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null | tr -d '\n') + echo "Latest Git tag fetched: $LATEST_TAG" + + # Save to file for downstream steps + echo "$LATEST_TAG" > /drone/src/LATEST_TAG.txt + + # Read back for verification + IMAGE_TAG=$(cat /drone/src/LATEST_TAG.txt | tr -d '\n') + echo "Image tag read from file: $IMAGE_TAG" + + # Validate + if [ -z "$IMAGE_TAG" ]; then + echo "❌ No git tags found! Cannot continue." + exit 1 + fi + + # ----------------------------------------------------- + # 2. Check existing Nakama Docker image + # ----------------------------------------------------- + - name: check-remote-image + image: docker:24 + volumes: + - name: dockersock + path: /var/run/docker.sock + commands: + - IMAGE_TAG=$(cat /drone/src/LATEST_TAG.txt | tr -d '\n') + + - echo "Checking if lila-games/nakama-server:$IMAGE_TAG exists on remote Docker..." + - echo "Existing Docker tags for lila-games/nakama-server:" + - docker images --format "{{.Repository}}:{{.Tag}}" | grep "^lila-games/nakama-server" || echo "(none)" + - | + if docker image inspect lila-games/nakama-server:$IMAGE_TAG > /dev/null 2>&1; then + echo "✅ Docker image lila-games/nakama-server:$IMAGE_TAG already exists — skipping build" + exit 78 + else + echo "⚙️ Docker image lila-games/nakama-server:$IMAGE_TAG not found — proceeding to build..." + fi + # ----------------------------------------------------- # 3. Build Nakama Docker image # ----------------------------------------------------- @@ -33,6 +84,34 @@ steps: -t lila-games/nakama-server:latest \ /drone/src + # ----------------------------------------------------- + # 4. Push Nakama Image + # ----------------------------------------------------- + - name: push-image + image: docker:24 + environment: + REGISTRY_HOST: + from_secret: REGISTRY_HOST + REGISTRY_USER: + from_secret: REGISTRY_USER + REGISTRY_PASS: + from_secret: REGISTRY_PASS + volumes: + - name: dockersock + path: /var/run/docker.sock + commands: + - IMAGE_TAG=$(cat /drone/src/LATEST_TAG.txt | tr -d '\n') + + - echo "🔑 Logging into registry $REGISTRY_HOST ..." + - echo "$REGISTRY_PASS" | docker login $REGISTRY_HOST -u "$REGISTRY_USER" --password-stdin + - echo "🏷️ Tagging images with registry prefix..." + - docker tag lila-games/nakama-server:$IMAGE_TAG $REGISTRY_HOST/lila-games/nakama-server:$IMAGE_TAG + - docker tag lila-games/nakama-server:$IMAGE_TAG $REGISTRY_HOST/lila-games/nakama-server:latest + - echo "📤 Pushing lila-games/nakama-server:$IMAGE_TAG ..." + - docker push $REGISTRY_HOST/lila-games/nakama-server:$IMAGE_TAG + - echo "📤 Pushing lila-games/nakama-server:latest ..." + - docker push $REGISTRY_HOST/lila-games/nakama-server:latest + # ----------------------------------------------------- # 5. Stop old Nakama container # -----------------------------------------------------