Files
kandev/docs/plans/gitlab-workflow-sync/task-05-wire-gitlab-provider.md
T
2026-08-07 21:06:10 +01:00

2.2 KiB

id, title, status, wave, depends_on, plan, spec
id title status wave depends_on plan spec
05-wire-gitlab-provider Wire the GitLab provider into workflow sync done 3
03-gitlab-workspace-repo-contents
04-workflowsync-provider-dispatch
plan.md ../../specs/gitlab-workflow-sync/spec.md

Task 05: Wire The GitLab Provider Into Workflow Sync

Acceptance

  1. initWorkflowSyncService accepts and forwards gitlabSvc alongside githubSvc, and gitlab.Service satisfies GitLabClientProvider at compile time. Backend boot succeeds with either integration unconfigured.
  2. The HTTP config GET/POST payloads carry provider and project_path; a POST omitting provider is still accepted as github, so existing API clients are unaffected. Routes, methods, and status codes are unchanged, and an invalid provider returns HTTP 400 via ErrInvalidConfig.
  3. An end-to-end backend test configures a GitLab sync against a mock GitLab client and asserts the fetched definitions are applied — covering spec scenarios 1 and 7 (nested subgroup project_path).

Verification

cd apps/backend && go test ./internal/workflowsync/... ./internal/backendapp/... -race

Files Likely Touched

  • apps/backend/internal/backendapp/services.go — initWorkflowSyncService signature and its call site.
  • apps/backend/internal/workflowsync/handlers.go — only if payload binding needs adjustment; the struct-driven bind may already suffice.
  • apps/backend/internal/workflowsync/service_test.go or a new integration test.

Inputs

  • Spec ## API Surface → ### HTTP, and ## Scenarios 1, 5, 7.
  • services.go:571-578 — current wiring, githubSvc only.
  • mock_client.go from task 01 provides the seedable GitLab fixture.

Risks

  • A hard dependency on a configured GitLab service would break boot for GitHub-only installs. Both providers must be optional/nil-tolerant.
  • Adding a required provider field to the POST contract would break existing clients. It must remain optional with a github default.

Output Contract

GitLab workflow sync works end-to-end at the service and HTTP layers, verified against a mock GitLab client including a nested subgroup path. Frontend is task 06.