name: Renovate on: # Weekly sweep. Mondays 05:00 UTC — this cron owns the cadence; the repo's # renovate.json5 deliberately has no internal schedule (avoids double-gating). schedule: - cron: '0 5 * * 1' # Manual run for an on-demand sweep from the Actions tab. workflow_dispatch: # Never let two Renovate runs touch the repo at once. concurrency: group: renovate cancel-in-progress: false jobs: renovate: # Gitea only — same guard, and the same reason, as release.yaml's `detect`: # this file is invisible to Codeberg only while .forgejo/ is non-empty, and # a repo-write token must never run on the contributor-facing runner. if: github.repository_owner == 'makiolaj' runs-on: docker # Run the Renovate image *as* the job container and invoke the `renovate` # binary directly. The renovatebot/github-action wrapper is a thin Node # action that shells out to `docker run …` — it needs a Docker CLI + socket # inside the job, which the Gitea runner's plain node container has not, so # it died on "Unable to locate executable file: docker". Running the image # directly drops the docker-in-docker requirement entirely. # Full tag pinned; Renovate's github-actions manager keeps it bumped. container: image: ghcr.io/renovatebot/renovate:43.232.0 steps: - name: Run Renovate run: renovate env: # Renovate targets Codeberg (canonical) while still RUNNING on the # Gitea runner. Moving the job to Codeberg would put a repo-write # token on the contributor-facing runner, which is exactly what the # .forgejo/ vs .gitea/ split exists to prevent — so the token stays # where the other secrets live and only the API calls cross over. # # Platform is `forgejo`, not `gitea`: Codeberg runs Forgejo, and the # pinned image ships a distinct forgejo platform module. RENOVATE_PLATFORM: forgejo RENOVATE_ENDPOINT: https://codeberg.org/api/v1 # Codeberg bot-account token (Gitea secret). Needs repo read/write + # PR scope on jlmakiola/agendula. RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }} # Scope to this repo only — no org-wide autodiscovery. RENOVATE_AUTODISCOVER: 'false' RENOVATE_REPOSITORIES: '["jlmakiola/agendula"]' # Commits/PRs authored as the bot, not a real maintainer. This address # must be a verified email on the Codeberg bot account, otherwise the # commits show up unattributed there. RENOVATE_GIT_AUTHOR: 'Renovate Bot ' # Read-only github.com PAT (no scopes needed). Nearly every dependency # is *released* on GitHub, and without this, changelog/release-note # lookups hit the 60/h anonymous rate limit and PRs arrive with an # empty "Release Notes" section. RENOVATE_GITHUB_COM_TOKEN: ${{ secrets.GITHUB_COM_TOKEN }} LOG_LEVEL: info