Skip to content

gitlab-triage: Add Support for Configurable Statuses on Work Items

Summary

Add support for GitLab's new Configurable Statuses feature (releasing in 18.2) to enable meaningful dogfooding and replace workflow:: scoped labels in our triage processes.

Background

GitLab 18.2 introduces Configurable Statuses, allowing projects to define custom status workflows beyond the traditional Open/Closed states. This feature will enable more granular issue tracking and should replace our current workflow:: scoped label system.

Requirements

Functional Requirements

  • GraphQL API Integration: Implement support using GraphQL API exclusively (no REST API is available)
  • Status Reading: Ability to read current configurable status of issues/merge requests
  • Status Setting: Ability to set configurable statuses based on triage rules
  • Status Filtering: Support filtering issues/merge requests by configurable status

Technical Requirements

  • Use GitLab GraphQL API
  • Maintain backward compatibility with existing triage rules
  • Support at least issues (other work item types will support it but right now all internal automations are based on issues or merge requests)

Proposed Implementation

Configuration Example

resource_rules:
  issues:
    rules:
      - name: "Move to Workflow Blocked"
        conditions:
          - type: "label_added"
            label: "workflow::blocked"
        actions:
          - type: "status"
            status: "Blocked"

Note: status is already used in gitlab-triage for open/closed. Since configurable statuses extend these states with a full lifecycle, a decision should be made whether to overload this existing field or set a new one.

Edited by John Hope