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 witharga test-runner scenarios import --file scenario.json.
Parameters
The following fields belong directly insideseed_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 apistyle REST and GraphQL workflows, including a minimal GraphQL surface forglab api graphqlcalls.- 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/mcpand/mcp, with tools for projects, issues, merge requests, files, and pipelines. - Token authentication via
Authorization: Bearer ...,PRIVATE-TOKEN,JOB-TOKEN, orprivate_tokenquery 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 atGET /healthz.
- 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/v4surface,glabCLI 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
DELETEto drop seeded entities. - State is process-local and is discarded when the Twin Run ends.
get_twin_catalog, provision_twins, start_url_validation, get_validation_results.
See Scenario seeding for saving, provisioning, and resetting fixtures.
