name: Deploy mini-pc on: push: paths: - '.gitea/workflows/deploy-mini-pc.yml' - 'mini-pc/**' jobs: deploy: runs-on: mini-pc steps: - name: Deploy changed stacks run: | set -euxo pipefail cd /opt/services git --version docker version docker compose version git config --global --add safe.directory /opt/services git pull git --no-pager diff --name-only HEAD~1 HEAD dirs="$(git --no-pager diff --name-only HEAD~1 HEAD | grep '^mini-pc/' | cut -d/ -f2 | sort -u || true)" if [ -z "$dirs" ]; then echo "No changed mini-pc stacks" exit 0 fi for dir in $dirs; do echo "==> Deploying $dir" if [ "$dir" = "gitea-runner" ]; then echo "Skipping gitea-runner self-update" continue fi cd /opt/services/mini-pc/$dir test -f docker-compose.yml || { echo "No docker-compose.yml in $dir, skipping"; cd /opt/services; continue; } docker compose config --quiet if grep -qE '^[[:space:]]*build:' docker-compose.yml; then echo "==> Running docker compose up -d --build --remove-orphans for $dir" docker compose up -d --build --remove-orphans else echo "==> Running docker compose pull for $dir" docker compose pull echo "==> Running docker compose up -d --remove-orphans for $dir" docker compose up -d --remove-orphans fi docker compose ps cd /opt/services done