Przejdź do głównej zawartości

Wdrożenia CI/CD

Q247 zbiera historię wdrożeń z potoków CI/CD. Pobierają ją te same konektory repozytoriów, które dostarczają commity. Korzystają przy tym z tokenu zapisanego w konektorze, więc zbieranie nie wymaga osobnego formularza. Po stronie Klienta trzeba sprawdzić uprawnienia tokenu, a przy Private Plugin także wersję i plik konfiguracyjny wtyczki.

Na podstawie tych danych w kolejnym wydaniu zostaną udostępnione metryki DORA: Częstotliwość wdrożeń, Czas wdrożenia zmian, Odsetek wdrożeń powodujących awarie i Czas przywrócenia działania.

Obsługiwane platformy​

PlatformaŹródło wdrożeńObsługiwane instalacje
GitLabGitLab CI/CDgitlab.com i instancje własne
GitHubGitHub Actions i pozostałe wdrożenia rejestrowane w API GitHubagithub.com i GitHub Enterprise Server
Azure DevOpsYAML Pipelines i EnvironmentsAzure DevOps Services oraz Azure DevOps Server 2020 i nowszy
BitbucketBitbucket Pipelineswyłącznie Bitbucket Cloud

W Azure DevOps wdrożeniem jest uruchomienie zadania, które deklaruje środowisko (Environment, w YAML klucz environment:). Zadania bez zadeklarowanego środowiska nie zostawiają w Azure DevOps historii wdrożeń, więc wtyczka ich nie zbiera.

Klasyczne potoki Release Management w Azure DevOps nie są obsługiwane, podobnie jak Bitbucket Data Center i Server. Konektory Gitea, Gerrit i Generic GIT nie dostarczają danych o wdrożeniach.

Zakres danych o wdrożeniu​

Dla każdego wdrożenia wtyczka pobiera:

  • nazwę środowiska i status wdrożenia,
  • wdrożony commit, gałąź albo tag, z którego pochodzi, oraz wersję, jeśli jest dostępna,
  • czas rozpoczęcia i zakończenia oraz link do wdrożenia w systemie źródłowym,
  • nazwę potoku,
  • e-mail albo login konta, które uruchomiło wdrożenie (często jest to konto CI),
  • przy wdrożeniu zakończonym powodzeniem listę identyfikatorów commitów objętych wdrożeniem.

Zdarzenie wdrożenia nie zawiera kodu źródłowego, diffów, wiadomości commitów, logów potoków, zmiennych ani sekretów. Wiadomości commitów Q247 dostaje osobno, w zdarzeniach commitów. Pełną listę pól obu rodzajów zdarzeń zawiera Bezpieczeństwo Enterprise Plugin.

Wdrożenia są zbierane tylko z repozytoriów przypisanych do projektu w Źródłach, a repozytoria bez projektu wtyczka pomija. Historię z ostatnich 365 dni wtyczka pobiera dla każdego repozytorium osobno, przy jego pierwszym przetworzeniu, a potem dociąga już tylko nowe wdrożenia. Repozytorium przypisane do projektu później również dostaje 365 dni wstecz, liczone od pierwszego przebiegu po przypisaniu.

Wdrożenia nie zmieniają Kalorii, a konto CI, które uruchomiło wdrożenie, nie staje się przez to użytkownikiem organizacji ani uczestnikiem projektu.

Uprawnienia tokenów​

Zbieranie wdrożeń korzysta z tokenu zapisanego w konektorze. W części systemów token potrzebuje do tego zakresów, których sam konektor nie wymaga.

PlatformaWymagane uprawnieniaZmiana względem konektora
GitLabread_user, read_api i read_repositorybez zmian
GitHub, token klasycznyrepobez zmian
GitHub, token fine-grainedContents, Deployments, Actions i Metadata, każde na poziomie Read-onlydochodzą Deployments, Actions i Metadata
Azure DevOpsCode (Read), Project and Team (Read), Build (Read) i Environment (Read & manage)dochodzą Build (Read) i Environment (Read & manage)
Bitbucket Cloudtoken API Bitbucket z uprawnieniami opisanymi na stronie BitBucket, w tym z odczytem Pipelines (zakres read:pipeline:bitbucket)dochodzi odczyt Pipelines

Bez uprawnienia Deployments wtyczka nie pobierze wdrożeń z GitHuba, a bez uprawnienia Actions pobierze je bez nazwy potoku.

Zakres Environment w Azure DevOps tylko z prawem zarządzania

Microsoft nie udostępnia dla środowisk zakresu tylko do odczytu, dlatego token musi mieć zakres Environment (Read & manage). Wtyczka korzysta z niego wyłącznie do odczytu środowisk i historii wdrożeń.

Wersja i konfiguracja wtyczki​

Cloud Plugin utrzymuje Q247, więc po stronie Klienta wystarczą kroki 1 i 2 poniżej. Private Plugin wymaga wszystkich sześciu:

  1. Token w istniejącym konektorze. Jeśli tabela w Uprawnieniach tokenów podaje dla danej platformy nowe zakresy, wygeneruj token z tymi zakresami, otwórz konektor w Konfiguracji, w sekcji Wtyczki, przyciskiem „Edytuj”, wpisz nowy token i zapisz przyciskiem „Zapisz zmiany”.
  2. Repozytoria przypisane do projektu w Źródłach. Z repozytoriów bez projektu wdrożenia nie są zbierane.
  3. Wtyczka w wersji q247-enterprise-plugin-linux-v2.7.9 lub nowszej, pobrana przyciskiem „Plik wtyczki” w nagłówku sekcji Wtyczki (→ Pobranie plików).
  4. Wpis { "code": "CICD" } w tablicy plugins.items pliku config.cfg. Sama aktualizacja pliku wtyczki nie włącza zbierania. Miejsce wpisu i przykład pokazuje Instalacja.
  5. Ponowne uruchomienie wtyczki, bo config.cfg jest wczytywany tylko przy starcie. Polecenie uruchomienia podaje Instalacja.
  6. Sprawdzenie logu q247-plugin.log: po starcie powinna się w nim pojawić linia Started addon CI/CD Deployments (→ Diagnostyka zbierania).

Moduł CICD łączy się z tymi samymi hostami systemów kontroli wersji co konektor repozytoriów, tylko z innymi ścieżkami ich API, więc istniejące reguły firewalla dla tych systemów wystarczają.

Plik konfiguracyjny pobierany z panelu zawiera już wpis CICD. Ma jednak ustawienia domyślne, więc zastąpienie nim dotychczasowego pliku usuwa wprowadzone w nim zmiany, w tym własne porty i sekcję ssl. Z tej drogi warto korzystać tylko wtedy, gdy plik nie był zmieniany po pobraniu.

Diagnostyka zbierania​

Brak uprawnień do wdrożeń nie daje komunikatu w aplikacji ani nie zmienia statusu konektora. Konfigurację sprawdza się po stronie tokenu i wtyczki:

  1. Zakresy tokenu zgodne z tabelą w Uprawnieniach tokenów.
  2. Wersja wtyczki i wpis CICD (Private Plugin): wersja q247-enterprise-plugin-linux-v2.7.9 lub nowsza, wpis w plugins.items i ponowne uruchomienie po jego dopisaniu.
  3. Log wtyczki q247-plugin.log (Private Plugin), w którym moduł zostawia linie opisane w tabeli poniżej.
Linia w loguZnaczenie
Started addon CI/CD Deploymentsmoduł CICD wystartował razem z wtyczką; brak tej linii po starcie oznacza brak wpisu CICD w plugins.items albo wtyczkę starszą niż q247-enterprise-plugin-linux-v2.7.9
CICD ingest for <konto>: ...podsumowanie przebiegu: liczba nowych wdrożeń, przetworzonych repozytoriów, błędów i repozytoriów bez projektu
CICD <konto>: error processing repo <adres> (poziom ERROR)błąd pobierania wdrożeń z repozytorium, w tym odmowa dostępu przy brakującym zakresie tokenu
CICD <konto>: skipping N repo(s) without a project assignment.wtyczka pominęła repozytoria bez przypisanego projektu

W miejscu <konto> log podaje identyfikator konta Q247, czyli organizacji w Q247. Nazwy konektora w tych liniach nie ma, a repozytorium wskazuje jego adres.

Zobacz też​