name: Build and deploy Flutter Web on: push: branches: - main jobs: build: runs-on: build-host env: SERVICE_NAME: flutter IMAGE_SHA: gitea.dsrptlab.com/mapflow/flutter:${{ github.sha }} IMAGE_LATEST: gitea.dsrptlab.com/mapflow/flutter:latest DOKPLOY_DEPLOY_WEBHOOK: http://sin.dsrptlab.com:3000/api/deploy/b7iCKmvlGMU-2HmI79fcC steps: - uses: actions/checkout@v4 - name: Configure Gitea registry auth run: | set -euo pipefail mkdir -p ~/.docker auth="$(printf '%s:%s' "${{ secrets.REGISTRY_USERNAME }}" "${{ secrets.REGISTRY_TOKEN }}" | base64 | tr -d '\n')" printf '{"auths":{"gitea.dsrptlab.com":{"auth":"%s"}}}\n' "$auth" > ~/.docker/config.json - name: Free Docker build space run: | set -euo pipefail docker buildx prune --builder builder --all --max-used-space 40gb -f || true - name: Build and push image run: | set -euo pipefail builder="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_SHA" \ --tag "$IMAGE_LATEST" \ --build-arg MAPBOX_ACCESS_TOKEN="${{ secrets.MAPBOX_ACCESS_TOKEN }}" \ --build-arg MAPBOX_STYLE="mapbox/streets-v12" \ --build-arg TELEGRAM_BOT_USERNAME="carfteebot" \ . - 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: Trigger Dokploy webhook run: | set -euo pipefail [ -f .deploy-current ] || exit 0 payload=$(cat <