name: Deploy Monorepo to Opt on: [push] jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v4 with: fetch-depth: 1 - name: Install dependencies run: | # If using Alpine-based runner (standard) if command -v apk >/dev/null; then apk add --no-cache rsync # If using Ubuntu/Debian-based runner elif command -v apt-get >/dev/null; then apt-get update && apt-get install -y rsync fi - name: Sync and Launch Nextcloud run: | mkdir -p /opt/docker/nextcloud # rsync -v (verbose) ensures the file is updated on the host rsync -v ./ovh/nextcloud.yml /opt/docker/nextcloud/docker-compose.yml cd /opt/docker/nextcloud # --force-recreate ensures Docker actually picks up the new file docker compose up -d --force-recreate --remove-orphans - name: Sync and Launch Plex run: | mkdir -p /opt/docker/plex rsync -v ./ovh/plex.yml /opt/docker/plex/docker-compose.yml cd /opt/docker/plex docker compose up -d --force-recreate --remove-orphans - name: Sync and Launch CV run: | mkdir -p /opt/docker/cv # -a (archive) preserves permissions; --delete removes old junk rsync -av --delete ./cv/ /opt/docker/cv/ cd /opt/docker/cv # --build is required to refresh your custom HTML/Dockerfile docker compose up -d --build --force-recreate --remove-orphans - name: Cleanup run: | # Removes old CV images so your Xeon disk doesn't fill up docker image prune -f