Run Renovate now (N) on GitLab #142

Closed
opened 2026-10-12 07:51:40 -05:00 by deadstyle · 5 comments
Owner

Problem

N (run Renovate now) starts a Forgejo or GitHub workflow file named owner/repo/file. GitLab has no workflow files: it runs a project's whole pipeline on a branch, with variables. Until the adapter implements WorkflowDispatcher and the setting has a GitLab form, N is hidden on GitLab. Parent: #137. Depends on #138.

Acceptance criteria

To be written once the product question in the comments is answered (design.md → Running Renovate now covers Forgejo/GitHub only).

  • internal/forge/gitlab/workflows.go: DispatchWorkflow → POST /projects/:id/pipeline with ref and variables: [{key: RENOVATE_AUTODISCOVER_FILTER, value: <repo>}] for a one-repo run, none for all repos. 400 → ErrRefused with GitLab's message; 404 → ErrNotFound. Developer access on the Renovate project is needed.
  • Settings/onboarding validation: on a GitLab host the field takes a project path (group/sub/renovate-runner) instead of owner/repo/file. Core's parse of renovate_workflow branches on the host kind.
  • design.md → Running Renovate now and Settings, plus the README snippet, gain the GitLab form.

Context

  • Interface: internal/forge/forge.go WorkflowDispatcher. Precedent: internal/forge/github/workflows.go, #120.
  • GitLab POST /projects/:id/pipeline takes ref, variables, and since 18.1 inputs. Variables reach Renovate as environment variables directly, so no CI-file change is needed for the one-repo filter (unlike the Forgejo repo input).
## Problem `N` (run Renovate now) starts a Forgejo or GitHub workflow file named `owner/repo/file`. GitLab has no workflow files: it runs a project's whole pipeline on a branch, with variables. Until the adapter implements `WorkflowDispatcher` and the setting has a GitLab form, `N` is hidden on GitLab. Parent: #137. **Depends on #138.** ## Acceptance criteria To be written once the product question in the comments is answered *(design.md → Running Renovate now covers Forgejo/GitHub only)*. ## Plan (assuming the recommended answer) - `internal/forge/gitlab/workflows.go`: `DispatchWorkflow` → `POST /projects/:id/pipeline` with `ref` and `variables: [{key: RENOVATE_AUTODISCOVER_FILTER, value: <repo>}]` for a one-repo run, none for all repos. 400 → `ErrRefused` with GitLab's message; 404 → `ErrNotFound`. Developer access on the Renovate project is needed. - Settings/onboarding validation: on a GitLab host the field takes a project path (`group/sub/renovate-runner`) instead of `owner/repo/file`. Core's parse of `renovate_workflow` branches on the host kind. - design.md → Running Renovate now and Settings, plus the README snippet, gain the GitLab form. ## Context - Interface: `internal/forge/forge.go` `WorkflowDispatcher`. Precedent: `internal/forge/github/workflows.go`, #120. - GitLab `POST /projects/:id/pipeline` takes `ref`, `variables`, and since 18.1 `inputs`. Variables reach Renovate as environment variables directly, so no CI-file change is needed for the one-repo filter (unlike the Forgejo `repo` input).
Author
Owner

🤖 Decision needed: how should N (run Renovate now) work on a GitLab host? design.md describes only the Forgejo/GitHub form: the setting is a workflow file (owner/repo/file), and a one-repo run passes a repo input. GitLab has no workflow files. You start a project's whole pipeline on its default branch and pass variables.

  1. The setting is the Renovate project's path, for example group/renovate-runner. N starts that project's pipeline. A one-repo run passes the repo as Renovate's own filter variable, so a standard renovate-runner setup needs no CI change at all (simpler than Forgejo's repo input). Settings refuses a value that isn't a project path, with the format hint. Cost: about half a day, plus a GitLab note in design.md and the README.
  2. Hide N on GitLab for now. Everything else works; Renovate runs on its own schedule. Cost: none now, and this ticket waits.

Recommendation: 1. It keeps N on every forge, and GitLab's variables make the one-repo run easier to set up than on Forgejo.

🤖 **Decision needed:** how should `N` (run Renovate now) work on a GitLab host? design.md describes only the Forgejo/GitHub form: the setting is a workflow file (`owner/repo/file`), and a one-repo run passes a `repo` input. GitLab has no workflow files. You start a project's whole pipeline on its default branch and pass variables. 1. **The setting is the Renovate project's path, for example `group/renovate-runner`.** `N` starts that project's pipeline. A one-repo run passes the repo as Renovate's own filter variable, so a standard renovate-runner setup needs no CI change at all (simpler than Forgejo's `repo` input). Settings refuses a value that isn't a project path, with the format hint. Cost: about half a day, plus a GitLab note in design.md and the README. 2. **Hide `N` on GitLab for now.** Everything else works; Renovate runs on its own schedule. Cost: none now, and this ticket waits. **Recommendation:** 1. It keeps `N` on every forge, and GitLab's variables make the one-repo run easier to set up than on Forgejo.
Author
Owner

🤖 PM answered in session (2026-10-12): option 1. On GitLab the Renovate setting is the Renovate project's path; N starts that project's pipeline on its default branch, a one-repo run passes the repo as RENOVATE_AUTODISCOVER_FILTER.

🤖 PM answered in session (2026-10-12): option 1. On GitLab the Renovate setting is the Renovate project's path; `N` starts that project's pipeline on its default branch, a one-repo run passes the repo as `RENOVATE_AUTODISCOVER_FILTER`.
Author
Owner

🤖 Plan approved (engineering lead). Branch feature/142-gitlab-renovate-run.

  • GitLab adapter: N starts the Renovate project's pipeline on its default branch. A one-repo run sends the repo as the CI variable RENOVATE_AUTODISCOVER_FILTER. If GitLab refuses (for example, the pipeline's rules don't allow API-started pipelines), its reason is shown.
  • Setting: on a GitLab host, renovate_workflow is a project path such as group/renovate-runner, and subgroups are allowed. Settings and onboarding refuse anything else with the hint "Use a project path, for example group/renovate-runner". Other forges are unchanged.
  • Docs: design.md (onboarding step 6, Settings, Running Renovate now), the README and architecture.md get the GitLab form.
🤖 Plan approved (engineering lead). Branch `feature/142-gitlab-renovate-run`. - **GitLab adapter:** `N` starts the Renovate project's pipeline on its default branch. A one-repo run sends the repo as the CI variable `RENOVATE_AUTODISCOVER_FILTER`. If GitLab refuses (for example, the pipeline's rules don't allow API-started pipelines), its reason is shown. - **Setting:** on a GitLab host, `renovate_workflow` is a project path such as `group/renovate-runner`, and subgroups are allowed. Settings and onboarding refuse anything else with the hint "Use a project path, for example group/renovate-runner". Other forges are unchanged. - **Docs:** design.md (onboarding step 6, Settings, Running Renovate now), the README and architecture.md get the GitLab form.
Author
Owner

🤖 MR open: #151

🤖 MR open: https://git.bobparsons.dev/deadstyle/lazyforge/pulls/151
Author
Owner

🤖 merged: #151

🤖 merged: https://git.bobparsons.dev/deadstyle/lazyforge/pulls/151
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
deadstyle/lazyforge#142
No description provided.