name: Deploy cloud-pc on: workflow_dispatch: inputs: stack: description: Stack directory to deploy required: true push: paths: - '.gitea/workflows/deploy-cloud-pc.yml' - 'cloud-pc/**' jobs: deploy: runs-on: cloud-pc steps: - name: Deploy 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 if [ -n "${{ inputs.stack }}" ]; then dirs="${{ inputs.stack }}" else git --no-pager diff --name-only HEAD~1 HEAD dirs="$(git --no-pager diff --name-only HEAD~1 HEAD | grep '^cloud-pc/' | cut -d/ -f2 | sort -u || true)" fi if [ -z "$dirs" ]; then echo "No changed cloud-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/cloud-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