name: Deploy Addons on: push: branches: [main] paths: - 'addon/**' - 'lobby-addon/**' - 'hub-return-addon/**' - 'village-evolution-addon/**' - 'monkey-addon/**' - 'private-chest-addon/**' - 'home-sign-addon/**' - 'keep-inventory-addon/**' - 'postal-service-addon/**' - 'camping-supplies-addon/**' - 'family-goals-addon/**' - 'redstone-link-addon/**' - 'dynamite-addon/**' - 'hemp-addon/**' - 'naturalist-lite-addon/**' - 'smart-crafting-addon/**' - 'tow-boat-addon/**' - 'trees-features-addon/**' - 'docker-compose.yml' - 'scripts/**' jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy via SSH uses: appleboy/ssh-action@v1 with: host: ${{ secrets.DEPLOY_HOST }} username: ${{ secrets.DEPLOY_USER }} password: ${{ secrets.DEPLOY_PASSWORD }} port: 22 script: | set -e APP_DIR="$HOME/minecraft-multiworld" # Anything mounted in docker-compose.yml but missing here is simply # never refreshed by CI. family-goals-addon and redstone-link-addon # are listed because docker-compose.yml mounts them; omitting either # while checking out docker-compose.yml would leave a mount pointing # at a directory this job never delivers. PATHS="addon/ lobby-addon/ hub-return-addon/ village-evolution-addon/ monkey-addon/ private-chest-addon/ home-sign-addon/ keep-inventory-addon/ postal-service-addon/ camping-supplies-addon/ family-goals-addon/ redstone-link-addon/ dynamite-addon/ hemp-addon/ naturalist-lite-addon/ smart-crafting-addon/ tow-boat-addon/ trees-features-addon/ docker-compose.yml" # First run: clone. Subsequent: pull. if [ ! -d "$APP_DIR/.git" ]; then cd "$APP_DIR" git init git remote add origin https://git.silverlabs.uk/SilverLABS/minecraft-aiworld.git git fetch origin main git checkout -f origin/main -- $PATHS else cd "$APP_DIR" git fetch origin main git checkout -f origin/main -- $PATHS fi # Recreate containers so any new docker-compose volume mounts are applied, # then restart remaining containers to pick up script changes docker compose up -d --force-recreate # Wait and verify sleep 10 docker ps --filter "name=mc-" --format "{{.Names}}: {{.Status}}"