Skip to content

GitLabForm

Dennis Lee edited this page May 27, 2026 · 1 revision

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

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.

What It Manages

  • 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

Hierarchical Configuration

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 default

How It Works

GitLabForm 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.

Installation

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:latest

Positioning

GitLabForm 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.

Radar Assessment

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.

Clone this wiki locally