diff --git a/.gitea/workflows/build-and-deploy.yml b/.gitea/workflows/build-and-deploy.yml new file mode 100644 index 0000000..d7f67af --- /dev/null +++ b/.gitea/workflows/build-and-deploy.yml @@ -0,0 +1,70 @@ +name: Build and deploy Backend + +on: + push: + branches: + - main + +jobs: + build: + runs-on: build-host + env: + SERVICE_NAME: backend + IMAGE: gitea.dsrptlab.com/mapflow/backend:${{ github.sha }} + DOKPLOY_APPLICATION_ID: ahtv545dRvRjoJnFNjiYv + steps: + - uses: actions/checkout@v4 + + - name: Log in to Gitea registry + run: | + echo "${{ secrets.REGISTRY_TOKEN }}" | docker login gitea.dsrptlab.com \ + -u "${{ secrets.REGISTRY_USERNAME }}" \ + --password-stdin + + - name: Build and push image + run: | + set -euo pipefail + builder="mapflow-builder" + if ! docker buildx inspect "$builder" >/dev/null 2>&1; then + docker buildx create --name "$builder" --driver docker-container --buildkitd-config /etc/buildkit/buildkitd.toml + fi + docker buildx use "$builder" + docker buildx inspect --bootstrap + docker buildx build --push --tag "$IMAGE" . + + - name: Skip stale deployment + run: | + set -euo pipefail + latest_sha="$(git ls-remote origin refs/heads/main | awk '{print $1}')" + if [ "$latest_sha" = "${GITHUB_SHA}" ]; then + touch .deploy-current + else + echo "A newer main commit exists: $latest_sha. Skipping deploy for ${GITHUB_SHA}." + fi + + - name: Update Dokploy image + run: | + set -euo pipefail + [ -f .deploy-current ] || exit 0 + payload=$(cat <