Skip to main content
Use gitlab in twins and put this configuration under seed_config.gitlab. GitLab with users, groups, projects, repository files, branches, issues, merge requests, CI pipelines, variables, and webhooks.

Example seed

This is the complete Scenario request body for creating a Scenario. You can also import it with arga test-runner scenarios import --file scenario.json.

Parameters

The following fields belong directly inside seed_config.gitlab. Required nested fields are marked in their tables. Provider-native objects can contain service-specific fields beyond the representative record shapes below.

Resource fields

These tables describe the record shapes used by the example. Keep native field names and casing. Map keys such as property names, IDs, and metadata keys are supplied by your fixture.

users[]

groups[]

projects[]

projects[].files[]

projects[].branches[]

projects[].issues[]

projects[].merge_requests[]

projects[].merge_requests[].files[]

projects[].variables[]

projects[].pipelines[]

API coverage and limitations

Twin name: gitlab Supports
  • GitLab REST API v4 routes for users, groups, namespaces, projects (by numeric ID or full path), repository branches, files, and commits, issues, merge requests, notes, discussions, pipelines, pipeline schedules, jobs, job artifacts, and project hooks.
  • glab api style REST and GraphQL workflows, including a minimal GraphQL surface for glab api graphql calls.
  • GitBeaker SDK-style calls, including package routes served outside /api/v4 (/projects/..., /groups/..., /packages/...) and GitLab-shaped fallback responses for unmodeled endpoints on resolved projects.
  • GitLab MCP-compatible JSON-RPC over /api/v4/mcp and /mcp, with tools for projects, issues, merge requests, files, and pipelines.
  • Token authentication via Authorization: Bearer ..., PRIVATE-TOKEN, JOB-TOKEN, or private_token query parameters. Tokens match GitLab client expectations; no external authentication is performed.
  • Admin endpoints to inspect and reseed state (/admin/reset, /admin/state, /admin/clock, /admin/fidelity) and a liveness check at GET /healthz.
Known limitations
  • Users, groups, projects, branches, files, commits, issues, merge requests, pipelines, jobs, and hooks start empty unless seeded through config or scenario seeding, or created through API calls.
  • The REST /api/v4 surface, glab CLI compatibility, GitBeaker SDK compatibility, and the MCP JSON-RPC tools listed above are the fidelity target; other GitLab surfaces may be approximated or absent.
  • Delete operations on seeded resources are non-destructive by design so SDK and CLI probes remain repeatable. To remove state, use the admin reset endpoint rather than relying on a DELETE to drop seeded entities.
  • State is process-local and is discarded when the Twin Run ends.
MCP tools: get_twin_catalog, provision_twins, start_url_validation, get_validation_results. See Scenario seeding for saving, provisioning, and resetting fixtures.