# Deploy via package-updater (composite action) Notifies one or more `package-updater` instances to update the matching service(s) after a CI build. Each instance does whatever its own `MODE` dictates — `docker compose pull` + `up -d`, or `docker service update` for swarm. ## Usage In a consumer repo's `.gitea/workflows/deploy.yml`: ```yaml jobs: deploy: runs-on: ubuntu-latest needs: [build-and-push] steps: - uses: gitea.example.com/shcizo/package-updater/gitea-action@v1 with: endpoint: | https://updater-swarm.example.com/update https://updater-web01.example.com/update https://updater-web02.example.com/update image: registry.example.com/${{ gitea.repository }} tag: ${{ gitea.sha }} token: ${{ secrets.UPDATER_TOKEN }} ``` `UPDATER_TOKEN` should be set as an organisation-level secret in Gitea so all repos share it. All instances in the fleet must share the same bearer token, since one `token` input is sent to every endpoint. ## Inputs | Name | Required | Default | Description | |---|---|---|---| | `endpoint` | yes | — | Full URL to `/update`. Several may be given, one per line, to update a fleet. | | `image` | yes | — | Image reference without tag | | `tag` | no | `""` | Tag that was just pushed. Compose mode ignores it (the compose file pins the reference); **swarm mode sets the service image to it**, so omitting it deploys `:latest`. Always pass it. | | `token` | yes | — | Bearer token configured in package-updater | ## Failure modes Every endpoint is attempted, even when an earlier one fails — otherwise one dead server would leave the rest of the fleet un-updated, and the CI log would not show which hosts actually succeeded. The step exits non-zero if any endpoint returned 4xx/5xx or was unreachable. The log lists each endpoint with its HTTP status and response body, so a partial deploy is visible at a glance. Endpoints are contacted sequentially, so worst-case wall time is the number of endpoints times how long one update takes. Each request allows 10s to connect and 15 minutes to complete — `/update` is synchronous and waits for the deploy to finish.