name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install rsync run: apt-get update -qq && apt-get install -y -qq rsync # The job container only sees its own checkout — the live app lives # at /mnt/user/appdata/lunch-notifier on the host, bind-mounted into # this container at the same path (see runner container.options) so # `docker compose`'s relative volume paths resolve against the real # host directory rather than an ephemeral one. `.env` and `data/` # are server-only and must survive every deploy. - name: Sync source to deploy path run: | rsync -a --delete \ --exclude='.git' \ --exclude='.env' \ --exclude='data' \ ./ /mnt/user/appdata/lunch-notifier/ - name: Rebuild and restart working-directory: /mnt/user/appdata/lunch-notifier run: docker compose up -d --build