Ga naar hoofdinhoud

🏷️ GitHub repository labels

Overzicht

Bij Brixion gebruiken we een geautomatiseerd label-synchronisatiesysteem dat zorgt voor consistente labels in al onze repositories. Het systeem gebruikt GitHub custom properties om automatisch het juiste labelbestand te kiezen op basis van het type codebase.

Hoe het werkt

Automatische synchronisatie

  • Wanneer: Elke maandag om 06:00 UTC
  • Wat: Synchroniseert labels vanuit de centrale configuratie naar alle repositories
  • Trigger: Handmatig uitvoerbaar via de GitHub Actions interface

Label configuratie

Labels worden centraal beheerd in de brixion/.github repository onder de labels/ map:

brixion/.github/
├── labels/
│ ├── general.yml # Algemene labels voor alle repositories
│ ├── frontend.yml # Extra labels voor frontend projecten
│ ├── backend.yml # Extra labels voor backend projecten

Codebase types

Het systeem gebruikt de GitHub custom property codebase_type om te bepalen welke labels moeten worden toegepast:

Codebase typeLabels die worden toegepast
frontendgeneral.yml + frontend.yml
backendgeneral.yml + backend.yml
monorepogeneral.yml
infrageneral.yml
librarygeneral.yml
scriptsgeneral.yml
miscgeneral.yml

Setup voor nieuwe repositories

Stap 1: Codebase type instellen

  1. Ga naar je repository op GitHub
  2. Ga naar SettingsGeneral
  3. Scroll naar Custom properties
  4. Stel codebase_type in op de juiste waarde

Stap 2: Workflow toevoegen

Maak het bestand .github/workflows/label-sync.yml aan in je repository:

---
name: Label Sync
on: # yamllint disable-line rule:truthy
schedule:
- cron: '0 6 * * 1' # Weekly on Monday at 6 AM UTC
workflow_dispatch:
repository_dispatch:
types: [label-sync]

permissions:
issues: write # Required to create and update labels

jobs:
label-sync:
uses: brixion/.github/.github/workflows/label-sync.yml@main

tip

Dit workflowbestand is identiek voor alle repositories. Je hoeft alleen de codebase_type custom property in te stellen.

Handmatige synchronisatie

Je kunt labels ook handmatig synchroniseren:

  1. Ga naar je repository
  2. Klik op Actions
  3. Selecteer de Label Sync workflow
  4. Klik op Run workflow

Labels beheren

Nieuwe labels of wijzigingen voorstellen

Mis je een label of wil je een bestaand label aanpassen?
Maak een issue aan in brixion/.github om dit te bespreken met het team. Na akkoord kan het label worden toegevoegd of aangepast.

Nieuwe labels toevoegen

  1. Bewerk het juiste bestand in brixion/.github/labels/
  2. Commit en push je wijziging
  3. Laat je PR reviewen
  4. Labels worden automatisch gesynchroniseerd bij de volgende run

Nieuwe codebase types toevoegen

  1. Maak een nieuw labelfile aan in brixion/.github/labels/ (bijv. mobile.yml)
  2. Voeg het nieuwe type toe in brixion/.github/.github/workflows/label-sync-reusable.yml
  3. Stel de codebase_type custom property in bij de repositories die dit type gebruiken

Label formaat

Labels worden gedefinieerd in YAML. Voorbeeld:

- name: "type: bug"
color: "d73a4a"
description: "Something isn't working"

- name: "type: feature"
color: "a2eeef"
description: "New feature or request"

- name: "priority: high"
color: "ff0000"
description: "High priority issue"

Voordelen

  • Consistentie: Alle repositories hebben dezelfde basislabels
  • Automatisering: Geen handmatige acties nodig
  • Flexibiliteit: Labels per codebase type
  • Centraal beheer: Wijzigingen worden automatisch uitgerold
  • Schaalbaarheid: Werkt probleemloos voor 100+ repositories

Problemen

Labels worden niet gesynchroniseerd

  1. Controleer of codebase_type correct is ingesteld
  2. Controleer of de workflow bestaat in .github/workflows/
  3. Bekijk de logs van GitHub Actions voor foutmeldingen
  4. Voer een handmatige synchronisatie uit

Onbekend codebase type

Als een codebase type niet wordt herkend, worden alleen de general.yml labels toegepast. Bekijk de Actions logs voor waarschuwingen.