Skip to content

Zarządzanie projektami w gitlab

W poprzednim poście opisałem jak zarządzać grupami za pomocą opentofu. Dziś opowiem jak to robić z projektami.


Wymagania

  • zainstalowany opentofu
  • repozytorium iac-gitlab z zestawem definicji, który pozwala w deklaratywny sposób tworzyć i utrzymywać grupy oraz projekty w GitLabie.
  • Dwa moduły:

  1. profiles/opentofu

  2. Napisanie logiki dla modułu gitlab-project

    Section titled “Napisanie logiki dla modułu gitlab-project”

    Wydanie wersji 1.0.0

  3. Utworzenie definicji w iac-gitlab-com dla grup

    Section titled “Utworzenie definicji w iac-gitlab-com dla grup”

Jak zbudowane jest repozytorium iac-gitlab ?

Section titled “Jak zbudowane jest repozytorium iac-gitlab ?”

Struktura katalogów odzwierciedla hierarchię GitLaba:

iac-gitlab-com
├── data/                                 # listy do walidacji (typy projektów, avatary, etykiety)
├── dev.rachuna/                          # główna grupa i jej podgrupy
│   ├── apps/        
│   │   └── docs.tf.json
│   ├── artifacts/
│   │    └── opentofu/
│   │         ├── gitlab-group.tf.json
│   │         └── gitlab-project.tf.json
│   └── infrastructure/
│       └── gitlab-com/
│           └── iac-gitlab.tf.json
└── _providers.tf.json                    # konfiguracja providerów (m.in. GitLab)

Moduł gitlab-project umożliwia definiowanie parametrów projektu:

{
  "module": {
    "iac-gitlab": {
      "source": "git::https://gitlab.com/dev.rachuna/artifacts/opentofu/gitlab-project.git?ref=1.0.0",
      "name": "iac-gitlab",
      "description": "IAC do zarządzania obiektami GitLab (gitlab.com).",
      "visibility": "public",
      "parent_group": "${local.parent_name}",
      "project_type": "opentofu-iac",
      "environments": {
        "production": {
          "external_url": "https://gitlab.com/dev.rachuna/infrastructure/gitlab-com/iac-gitlab/-/terraform"
        }
      }
    }
  }
}