-
Notifications
You must be signed in to change notification settings - Fork 0
GitLabForm
title: GitLabForm radar_quadrant: Tools radar_ring: Assess radar_position: inner created: 2026-05-22 last_updated: 2026-05-22 related: ["TerraformTestFramework", "CloudFormationIaCGenerator", "ContinuousIntegration"]
GitLabForm is a configuration-as-code tool for managing GitLab platform settings declaratively via YAML. It applies group and project configuration idempotently through the GitLab API, eliminating manual UI configuration and preventing settings drift across projects.
- Branch protections: push/merge access levels, required approvals
- Merge request rules: approval requirements, squash settings
- CI/CD variables: group and project-level, masked/protected flags
- Pipeline schedules: cron-triggered pipelines with variables
- Webhooks: URLs, triggers, SSL verification
- Deploy keys: SSH keys with access levels
- Members and access: group/project membership, LDAP/SAML links
- Integrations: Jira, Slack, and other GitLab integrations
- Labels, badges, avatars, push mirrors
Config is organized by group and project with inheritance. Group-level settings apply to all projects beneath; project-level config overrides specifics:
projects_and_groups:
my-group/*:
branches:
main:
protected: true
push_access_level: maintainer
variables:
DEPLOY_ENV:
value: "production"
my-group/special-project:
variables:
DEPLOY_ENV:
value: "staging" # overrides group defaultGitLabForm reads the YAML config and makes PUT/POST requests to GitLab's API to bring each resource into the declared state. Because it passes parameters directly to the API, it supports newer GitLab features without requiring a tool update.
Docker quickstart (no local install needed):
docker run -it -v $(pwd):/config \
-e GITLAB_URL=https://gitlab.example.com \
-e GITLAB_TOKEN=<token> \
ghcr.io/gitlabform/gitlabform:latestGitLabForm is lighter than the GitLab Terraform provider for GitLab-specific admin tasks: no state backend, no HCL, runs as a one-shot CI job. It complements .gitlab-ci.yml (which manages pipeline behaviour) by managing the platform configuration surrounding the pipeline — who can push to protected branches, which variables exist, which webhooks fire.
GitLabForm sits at Tools → Assess inner. GitLab configuration drift is a real operational problem for teams managing multiple projects or groups. The hierarchical YAML model and idempotent apply make it the right pattern for treating GitLab settings as code. Docker-based execution requires no installation. Trial gate: a completed apply run managing branch protections and CI/CD variables across at least one group of projects.