From 06904143d638e0b24b1bec541f14404936695b6f Mon Sep 17 00:00:00 2001 From: Vishesh 'ironeagle' Bangotra Date: Sat, 29 Nov 2025 18:27:26 +0530 Subject: [PATCH] drone deployment --- .drone.yml | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..ca10459 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,154 @@ +--- +kind: pipeline +type: docker +name: nakama-server + +platform: + os: linux + arch: arm64 + +workspace: + path: /drone/src + +volumes: + - name: dockersock + host: + path: /var/run/docker.sock + +steps: + # ----------------------------------------------------- + # 1. Fetch latest Git tag + # ----------------------------------------------------- + - name: fetch-tags + image: docker:24 + volumes: + - name: dockersock + path: /var/run/docker.sock + commands: + - apk add --no-cache git + - git fetch --tags + - | + LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null | tr -d '\n') + echo "Latest Git tag: $LATEST_TAG" + echo "$LATEST_TAG" > /drone/src/LATEST_TAG.txt + if [ -z "$LATEST_TAG" ]; then + echo "❌ No git tags found. Cannot continue." + exit 1 + fi + + # ----------------------------------------------------- + # 2. Check if remote image already exists + # ----------------------------------------------------- + - name: check-remote-image + image: docker:24 + volumes: + - name: dockersock + path: /var/run/docker.sock + environment: + REGISTRY_HOST: + from_secret: REGISTRY_HOST + commands: + - IMAGE_TAG=$(cat /drone/src/LATEST_TAG.txt | tr -d '\n') + - echo "Checking if $REGISTRY_HOST/lila-games/nakama-server:$IMAGE_TAG exists..." + - | + if docker pull $REGISTRY_HOST/lila-games/nakama-server:$IMAGE_TAG > /dev/null 2>&1; then + echo "✅ Image already exists: $REGISTRY_HOST/lila-games/nakama-server:$IMAGE_TAG" + exit 78 + else + echo "⚙️ Image does not exist. Will build." + fi + + # ----------------------------------------------------- + # 3. Build Nakama Docker image + # ----------------------------------------------------- + - name: build-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 "🔨 Building Nakama image: lila-games/nakama-server:$IMAGE_TAG" + - | + docker build \ + --network=host \ + -t lila-games/nakama-server:$IMAGE_TAG \ + -t lila-games/nakama-server:latest \ + /drone/src + + # ----------------------------------------------------- + # 4. Push Nakama image to registry + # ----------------------------------------------------- + - name: push-image + image: docker:24 + volumes: + - name: dockersock + path: /var/run/docker.sock + environment: + REGISTRY_HOST: + from_secret: REGISTRY_HOST + REGISTRY_USER: + from_secret: REGISTRY_USER + REGISTRY_PASS: + from_secret: REGISTRY_PASS + commands: + - IMAGE_TAG=$(cat /drone/src/LATEST_TAG.txt | tr -d '\n') + - echo "🔑 Logging into registry..." + - echo "$REGISTRY_PASS" | docker login $REGISTRY_HOST -u "$REGISTRY_USER" --password-stdin + - echo "🏷️ Tagging images..." + - 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 images..." + - docker push $REGISTRY_HOST/lila-games/nakama-server:$IMAGE_TAG + - docker push $REGISTRY_HOST/lila-games/nakama-server:latest + + # ----------------------------------------------------- + # 5. Stop old Nakama container + # ----------------------------------------------------- + - name: stop-old + image: docker:24 + volumes: + - name: dockersock + path: /var/run/docker.sock + commands: + - echo "🛑 Stopping old Nakama container..." + - docker rm -f nakama-server || true + + # ----------------------------------------------------- + # 6. Run new Nakama container + # ----------------------------------------------------- + - name: run-container + image: docker:24 + volumes: + - name: dockersock + path: /var/run/docker.sock + environment: + DB_ADDR: + from_secret: POSTGRES_ADDR + SERVER_KEY: + from_secret: SERVER_KEY + REGISTRY_HOST: + from_secret: REGISTRY_HOST + commands: + - IMAGE_TAG=$(cat /drone/src/LATEST_TAG.txt | tr -d '\n') + - echo "🚀 Starting Nakama server..." + - | + docker run -d \ + --name nakama-server \ + -p 7350:7350 \ + -p 7351:7351 \ + -p 7349:7349 \ + --restart always \ + --add-host private-pi:192.168.1.111 \ + -e DB_ADDR="$DB_ADDR" \ + -e SERVER_KEY="$SERVER_KEY" \ + -v /mnt/omnissiah-vault/data/nakama/modules:/nakama/data/modules \ + -v /mnt/omnissiah-vault/data/nakama/storage:/nakama/data \ + $REGISTRY_HOST/lila-games/nakama-server:$IMAGE_TAG + +# ----------------------------------------------------- +# Pipeline trigger +# ----------------------------------------------------- +trigger: + event: + - tag