Files
Ninluc ab7b2db793
Build, push image, and notify Watchtower / build-image (push) Successful in 38s
Build, push image, and notify Watchtower / notify (push) Successful in 1m39s
Better standard fallback IP
2026-07-16 18:50:11 +02:00

55 lines
1.8 KiB
YAML

name: Build, push image, and notify Watchtower
on:
push:
branches:
- main # Only triggers the build on the main branch
jobs:
build-image:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Login to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: git.matthiasg.dev
username: ninluc
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: buildx-cache-${{ github.sha }}
restore-keys: |
buildx-cache-
- name: Build and push Docker image
run: |
docker build --file cloud/Dockerfile -t git.matthiasg.dev/ninluc/smartwave-api:latest .
docker push git.matthiasg.dev/ninluc/smartwave-api:latest
notify:
needs: build-image
runs-on: ubuntu-latest
steps:
- name: Notify Watchtower
run: |
# 1. Grab the default gateway hex code from the routing table
HEX_GW=$(awk '$2 == "00000000" {print $3; exit}' /proc/net/route)
# 2. Convert little-endian Hex (e.g., 010011AC) to standard Decimal IP (172.17.0.1)
if [ -n "$HEX_GW" ]; then
HOST_IP=$(printf "%d.%d.%d.%d" 0x${HEX_GW:6:2} 0x${HEX_GW:4:2} 0x${HEX_GW:2:2} 0x${HEX_GW:0:2})
else
HOST_IP="172.29.0.1" # Standard fallback
fi
echo "Detected Docker Host Gateway IP: $HOST_IP"
# 3. Trigger Watchtower directly over local HTTP port 8080
curl -i -X POST \
-H "Authorization: Bearer ${{ secrets.WATCHTOWER_TOKEN }}" \
"http://$HOST_IP:8007/v1/update"