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:
- gitlab-group - moduł opentofu do zarządzania grupami
- gitlab-project - moduł opentofu do zarządzania projektami
Krop po kroku
Section titled “Krop po kroku”-
Instalacja opentofu
Section titled “Instalacja opentofu”Wydanie wersji vagrat 1.1.0
-
Napisanie logiki dla modułu
Section titled “Napisanie logiki dla modułu gitlab-project”gitlab-projectWydanie wersji v1.0.0
-
Utworzenie definicji w
Section titled “Utworzenie definicji w iac-gitlab-com dla grup”iac-gitlab-comdla grup-
Definicja repozytorium pl.rachuna-net/apps/docs
-
Definicja repozytorium pl.rachuna-net/artifacts/opentofu/gitlab-group
-
Definicja repozytorium pl.rachuna-net/artifacts/opentofu/gitlab-project
-
Definicja repozytorium pl.rachuna-net/devtools/vagrant
-
Definicja repozytorium pl.rachuna-net/infrastructure/gitlab/iac-gitlab-com
tofu import module.pl_rachuna-net.module.apps.module.docs.gitlab_project.project 77233666 tofu import module.pl_rachuna-net.module.artifacts.module.opentofu.module.gitlab-group.gitlab_project.project 77550002 tofu import module.pl_rachuna-net.module.artifacts.module.opentofu.module.gitlab-project.gitlab_project.project 77551878 tofu import module.pl_rachuna-net.module.devtools.module.vagrant.gitlab_project.project 77501746 tofu import module.pl_rachuna-net.module.infrastructure.module.gitlab-com.module.iac-gitlab.gitlab_project.project 77549992
-
Jak zbudowane jest repozytorium iac-gitlab-com ?
Section titled “Jak zbudowane jest repozytorium iac-gitlab-com ?”Struktura katalogów odzwierciedla hierarchię GitLaba:
iac-gitlab-com
├── data/ # listy do walidacji (typy projektów, avatary, etykiety)
├── pl.rachuna-net/ # główna grupa i jej podgrupy
│ ├── apps/
│ │ └── docs.tf
│ ├── artifacts/
│ │ └── opentofu/
│ │ ├── gitlab-group.tf
│ │ └── gitlab-project.tf
│ ├── devtools/
│ │ └── vagrant.tf
│ └── infrastructure/
│ └── gitlab-com/
│ └── iac-gitlab.tf
└── _providers.tf # konfiguracja providerów (m.in. GitLab)Tworzenie projektu
Section titled “Tworzenie projektu”Moduł gitlab-project umożliwia definiowanie parametrów projektu:
module "iac-gitlab-com" {
source = "git@gitlab.com:pl.rachuna-net/infrastructure/gitlab/modules/gitlab-project.git?ref=v1.0.0"
name = "iac-gitlab-com"
description = "IAC do zarządzania obiektami GitLab (gitlab.rachuna-net.pl)."
visibility = "public"
avatar = "opentofu"
parent_group = local.parent_name
project_type = "opentofu"
ci_schedules = [
{
name = "Nightly"
description = "Nightly patch management"
ref = "main"
cron = "0 1 * * *"
cron_timezone = "Europe/Warsaw"
variables = {}
}
]
}