Skip to content

Examples

Marco edited this page Feb 3, 2026 · 2 revisions

Common configuration patterns for different use cases.

Directory Structure Overview

config/
├── config.yml              # Organization settings (single file)
├── repository/             # Repository definitions
│   ├── default-repositories.yml  # Default/example repositories
│   ├── frontend.yml              # Frontend team repositories
│   └── backend.yml               # Backend team repositories
├── group/                  # Configuration groups
│   ├── default-groups.yml  # Default groups (base, oss, internal)
│   └── custom-groups.yml   # Custom organization groups
└── ruleset/                # Ruleset definitions
    ├── default-rulesets.yml  # Default rulesets
    └── custom-rulesets.yml   # Custom rulesets

Microservices Organization

# config/group/microservice.yml
microservice:
  visibility: private
  has_issues: true
  delete_branch_on_merge: true
  topics:
    - microservice
# config/repository/services.yml
user-service:
  groups: [microservice]
  description: "User management service"
  topics:
    - users
    - auth

order-service:
  groups: [microservice]
  description: "Order processing service"
  topics:
    - orders
    - payments

Open Source Project

repositories:
  my-oss-project:
    description: "An awesome open source project"
    visibility: public
    has_issues: true
    has_wiki: true
    has_discussions: true
    topics:
      - opensource
      - community
    rulesets:
      protect-main:
        target: branch
        enforcement: active
        conditions:
          ref_name:
            include: ["refs/heads/main"]
        rules:
          pull_request:
            required_approving_review_count: 2
            dismiss_stale_reviews_on_push: true

Monorepo with Multiple Teams

repositories:
  platform:
    description: "Platform monorepo"
    visibility: private
    teams:
      platform-core: admin
      frontend: push
      backend: push
      devops: maintain
    rulesets:
      protect-main:
        target: branch
        enforcement: active
        conditions:
          ref_name:
            include: ["refs/heads/main"]
        rules:
          pull_request:
            required_approving_review_count: 1
          required_status_checks:
            required_checks:
              - context: "build"
              - context: "test"

Private Library with Strict Controls

repositories:
  internal-sdk:
    description: "Internal SDK for all services"
    visibility: private
    has_issues: true
    delete_branch_on_merge: true
    allow_merge_commit: false
    allow_rebase_merge: false
    allow_squash_merge: true
    teams:
      sdk-maintainers: admin
      developers: pull
    rulesets:
      protect-main:
        target: branch
        enforcement: active
        conditions:
          ref_name:
            include: ["refs/heads/main"]
        rules:
          pull_request:
            required_approving_review_count: 2
            dismiss_stale_reviews_on_push: true
            require_code_owner_review: true
          required_status_checks:
            strict_required_status_checks_policy: true
            required_checks:
              - context: "test"
              - context: "lint"
              - context: "security-scan"

Documentation Repository

repositories:
  docs:
    description: "Company documentation"
    visibility: private
    has_issues: true
    has_wiki: false
    has_discussions: true
    homepage_url: "https://docs.example.com"
    topics:
      - documentation
      - internal
    teams:
      everyone: push
      tech-writers: maintain

Open Source Project with OSS Group

Using the built-in groups:

# config/repository/awesome-library.yml
awesome-library:
  description: "An awesome open source library"
  groups: ["base", "oss"]
  license_template: mit
  topics:
    - library
    - awesome

Internal Tool with Custom Settings

# config/repository/internal-tool.yml
internal-tool:
  description: "Internal automation tool"
  groups: ["base", "internal"]
  has_wiki: false          # Override: disable wiki
  has_discussions: true    # Override: enable discussions
  teams:
    platform: admin        # Additional team

Repository with Multiple Rulesets

# config/repository/critical-service.yml
critical-service:
  description: "Critical production service"
  groups: ["base", "internal"]
  rulesets:
    - internal-main-protection
    - release-branch-protection
    - tag-protection

Using Ruleset Templates

# config/repository/my-app.yml
my-app:
  description: "My Application"
  groups: ["base"]
  rulesets:
    - template: strict-main        # Use template as-is
    - template: relaxed-devel      # Use another template

Repository with Webhooks

# config/repository/api-service.yml
api-service:
  description: "API service with CI/CD integration"
  groups: ["base", "internal"]
  webhooks:
    - jenkins-ci           # Reference webhook from config/webhook/
    - slack-notify
    - name: custom-hook    # Inline webhook definition
      url: https://custom.example.com/hook
      events: [release]