Przejdź do głównej zawartości

Confluence

Integracja z Confluence pozwala Q247 zmierzyć wysiłek wkładany w dokumentację. Strony i komentarze analizowane są tak samo jak kod i tickety, a ich wynik kaloryczny doliczany jest do dorobku autora. Confluence pojawia się też jako typ źródła na liście Źródeł, identyfikowany przez klucz przestrzeni, a nie klucz projektu jak w Jirze.

Ta integracja nie zasila Metryk przepływu. Te wymagają Jiry, bo liczone są z historii statusów ticketów.

Droga danych do Q247​

Tak jak w Jirze, dane o stronach i komentarzach trafiają do Q247 jedną z dwóch dróg, zależnie od wybranego sposobu pobierania. W trybie webhook zdarzenia wysyła Confluence, a miejsce ich odbiornika zależy od wariantu wdrożenia, opisanego w podsekcji niżej. W trybie API wtyczka sama cyklicznie odpytuje REST API Confluence. W obu przypadkach treść analizowana jest lokalnie, a do Q247 idzie wynik.

W trybie webhook integracja nie dostarcza bieżącej aktywności, dopóki webhook nie działa. Wtyczka reaguje wtedy na trzy zdarzenia:

ZdarzenieCo obejmuje
page_createdutworzenie strony
page_updatedaktualizację strony
comment_createddodanie komentarza

Chmura i On-Premise​

Podział jest taki sam jak przy Jirze i z tego samego powodu. W trybie webhook wariant Chmura kieruje zdarzenia do odbiornika po stronie Q247, wariant On-Premise do wtyczki pod adresem podanym w formularzu. W formularzach Q247 warianty nazywają się "Confluence Chmura" i "Confluence On-Premise", a Atlassian nazywa je Confluence Cloud i Confluence Data Center.

Dane dostępne po uruchomieniu​

  • Wynik kaloryczny stron i komentarzy, doliczany do dorobku autora obok kodu i ticketów.
  • Źródło typu Confluence na liście Źródeł, przypisywalne do projektu Q247 przez klucz przestrzeni.
  • Widoczność wkładu osób zajmujących się dokumentacją, bez commitów w repozytoriach. Bez tej integracji ich praca nie pojawia się w metrykach Q247.

Wymagania wstępne​

  • Konto serwisowe w Confluence z prawem odczytu przestrzeni objętych integracją.
  • Token API wygenerowany na tym koncie. W Atlassian Cloud to ten sam token, który obsługuje Jirę, więc jeśli konektor Jiry już działa, wystarczy użyć go ponownie. Ścieżki generowania opisuje strona Jiry.
  • Dostęp administratora Confluence, tylko w trybie webhook, jednorazowo: do instalacji aplikacji Q247 (Chmura) albo rejestracji webhooka (On-Premise).
  • Aplikacja Q247 w witrynie Atlassian, tylko dla wariantu Chmura w trybie webhook. Jeśli została zainstalowana przy okazji Jiry, drugi raz nie trzeba jej instalować, bo jeden link instalacyjny obejmuje oba produkty. Z organizacją w Q247 łączy się ją w Confluence osobno, w kroku 2a.
  • Wtyczka Q247 z włączoną obsługą Confluence, konfigurowana przez zespół wdrożeniowy Q247, patrz Instalacja Enterprise Plugin.

Wymagania sieciowe pokrywają się z tymi opisanymi dla Jiry: ruch wychodzący od wtyczki do Confluence i do Q247, a w wariancie On-Premise w trybie webhook dodatkowo ruch z instancji Confluence do wtyczki.

Adresy e-mail muszą być widoczne w Confluence On-Premise

W instancji musi być włączone Administration → General Configuration → User List → Show user email addresses to all users. Gdy ta opcja jest wyłączona, wtyczka może nie odczytać adresu autora i podstawia wtedy adres zastępczy. Integracja działa pozornie poprawnie: strony są przetwarzane, status konektora pokazuje Operacyjny, a wkład przypisuje się do nieistniejących osób. Żaden komunikat w interfejsie Q247 o tym nie ostrzega.

Sposób pobierania danych​

Konektor Confluence pobiera dane na jeden z dwóch sposobów. Wybór stoi w formularzu konektora, w grupie opcji "Sposób pobierania danych", z dwiema pozycjami:

PozycjaJak działa
Webhook - Confluence wysyła zdarzenia do pluginaConfluence sam wysyła zdarzenia: w wariancie On-Premise webhookiem zarejestrowanym w instancji, do wtyczki, a w wariancie Chmura przez aplikację Q247 dla Atlassian, do odbiornika po stronie Q247
Odpytywanie API - plugin cyklicznie czyta ConfluenceEnterprise Plugin sam czyta historię stron i komentarze przez REST API Confluence, według harmonogramu

Tryb API działa z Confluence Cloud i Confluence Data Center i wymaga Enterprise Plugin w wersji q247-enterprise-plugin-linux-v2.6.0 lub nowszej. W starszej wtyczce to ustawienie nie działa.

Przesłanki wyboru trybu API​

Odpytywanie API nie wymaga żadnego połączenia przychodzącego do wtyczki. Odpada rejestracja webhooka po stronie Confluence i wymaganie, żeby instancja widziała adres wtyczki. Przy tym trybie kroki 2a i 2b poniżej są zbędne.

Ustawienia trybu API​

Formularz konektora Confluence Chmura z wybranym trybem odpytywania API, częstotliwością skanowania i polem Przestrzenie oraz blokiem Backfill historyczny z przełącznikiem i oknem w dniach

Górna ramka na zrzucie obejmuje ustawienia trybu API, a dolna obejmuje blok "Backfill historyczny", opisany w sekcji Uzupełnianie danych historycznych.

PoleCo robi
Częstotliwość skanowaniaCodziennie (w nocy) albo Co godzinę. Tryb dzienny działa w nocy, według czasu hosta wtyczki, i nie obciąża Confluence w godzinach pracy. Tryb godzinowy daje świeższe dane kosztem cogodzinnego ruchu API do Confluence. Pole jest widoczne tylko w trybie API
Przestrzenieklucze przestrzeni Confluence do odpytywania, oddzielone przecinkami, na przykład ENG, DOCS. Puste pole, z podpowiedzią Wszystkie przestrzenie, oznacza wszystkie przestrzenie, które konto konektora może odczytać

Zapis listy przestrzeni zastępuje poprzednią listę w całości.

Pole "Przestrzenie" wyznacza, które przestrzenie wtyczka odpytuje i uzupełnia. Do którego projektu Q247 należy dana przestrzeń, ustala się osobno, przy przypisaniu źródła do projektu.

O tym, co jest liczone, decyduje konto konektora: strony i komentarze, których to konto nie może odczytać, nie są liczone. Do trybu API użyj konta serwisowego z prawem odczytu wszystkich przestrzeni, które mają być liczone.

→ Wymagania wstępne

Każdy komentarz jest pobierany i liczony jeden raz, z datą dodania. Późniejsza edycja komentarza nie jest liczona ponownie. Treść wpisów blogowych nie wchodzi do wyliczeń.

Tryb API korzysta z tych samych danych dostępowych co webhook, opisanych w kroku 1. W wariancie On-Premise osobisty token dostępu wpisany w pole "Token API / hasło" wystarcza sam, a hasło podaje się razem z polem "Nazwa użytkownika API".

Formularz nie pozwoli zapisać konektora bez adresu instancji albo bez tokenu. Komunikat wskazuje brakujące pole: w wariancie On-Premise Proszę podać: Confluence Podstawowy URL albo Proszę podać: Token API / hasło, w wariancie Chmura Proszę podać: Adres URL witryny Atlassian albo Proszę podać: Token API.

Przejście z webhooków na tryb API​

Przy przełączeniu aktywność z ostatnich 24 godzin jest uzgadniana z tym, co dostarczyły już webhooki.

Po zapisaniu zmiany usuń webhook w instancji Confluence (On-Premise) albo, jeśli była używana, aplikację Q247 z listy aplikacji Confluence (Chmura), czyli wpis skonfigurowany w kroku 2a. Wtyczka przyjmuje i odrzuca webhooki nadal dostarczane dla tego konektora, więc te zdarzenia nie są liczone drugi raz, ale sam webhook zostaje niepotrzebnie aktywny.

Diagnostyka trybu API​

Osobnego ekranu dla tego trybu nie ma. Kolumna Ostatnie skanowanie w tabeli Źródeł pokazuje dla źródeł Confluence N/D w każdym trybie, a karta konektora w Konfiguracji pokazuje tylko, czy konektor jest włączony: Operacyjny albo Nie działa. Żadne z tych miejsc nie sygnalizuje błędów odpytywania.

Przestrzeń z listy, której konto konektora nie może odczytać albo która nie istnieje, jest pomijana i odnotowywana w logu wtyczki, a pozostałe przestrzenie są pobierane normalnie. Gdy nie da się odczytać żadnej z podanych przestrzeni, przebieg kończy się błędem. Przy braku danych z części przestrzeni sprawdź najpierw klucze na liście i uprawnienia konta konektora.

Uzupełnianie danych historycznych​

Q247 może uzupełnić dane z okresu sprzed uruchomienia integracji z Confluence. Enterprise Plugin pobiera przez API historię wersji stron i komentarze, które zasilają Kalorie w typie Dokumentacja.

Ustawienia uzupełniania​

Uzupełnianie ustawia się w bloku "Backfill historyczny" formularza konektora, widocznym w dolnej ramce zrzutu.

Formularz konektora Confluence Chmura z blokiem Backfill historyczny: włączony przełącznik i okno backfillu ustawione na 730 dni

Blok ma dwa pola:

PoleCo robi
Backfill włączonyprzełącznik uzupełniania, domyślnie wyłączony. Po włączeniu historyczna aktywność z okna jest jednorazowo wczytywana i dopisywana do minionych okresów w Kaloriach. Przy wyłączonym przełączniku konektor zbiera od teraz tylko nową aktywność
Okno backfillu (dni)liczba dni wstecz, którą obejmuje uzupełnianie, całkowita od 1 do 7300. Pole podpowiada 730 dni, czyli dwa lata, i jest nieaktywne, dopóki przełącznik jest wyłączony

Uzupełnienie obejmuje wersje stron zmienione w oknie, także na stronach utworzonych wcześniej, oraz komentarze dodane w oknie. Wersje wpisów blogowych nie są uzupełniane.

Zakres przestrzeni wyznacza ta sama lista co w trybie API: pole "Przestrzenie", a przy pustym polu wszystkie przestrzenie, które konto konektora może odczytać. Strony, do których konto nie ma dostępu, nie są liczone.

Uzupełnianie działa w obu sposobach pobierania danych. Przebieg odbywa się w nocy, według czasu hosta wtyczki. Późniejsze zwiększenie okna uruchamia jednorazowy przebieg tylko dla dodanego zakresu. Zmniejszenie okna albo wyłączenie przełącznika nie usuwa danych, które już zostały uzupełnione.

Poza ustawieniem okna potrzebne są jeszcze dwie rzeczy: funkcja musi być udostępniona organizacji, a Enterprise Plugin musi być w wersji q247-enterprise-plugin-linux-v2.6.3 lub nowszej.

Uzupełnione dane w Kaloriach​

Uzupełnione wersje stron i komentarze trafiają do Kalorii z datą powstania, więc zasilają okresy sprzed uruchomienia integracji. Ani kolumna Ostatnie skanowanie, ani status konektora nie pokazują przebiegów uzupełniania, podobnie jak w trybie API. Przestrzeń z listy, której konto konektora nie może odczytać, jest pomijana na tej samej zasadzie co w trybie API.

→ Diagnostyka trybu API

Próg "Ukryj przyrosty powyżej" obejmuje wszystkie dane z Confluence, w tym uzupełnione.

→ Widoczność przyrostów

Uruchomienie krok po kroku​

1. Utworzenie konektora w Q247​

W Konfiguracji, w sekcji Dokumentacja, przy pozycji Confluence, przycisk "+" przy liście Konektory otwiera dwustopniowy formularz. W tym samym formularzu wybiera się sposób pobierania danych.

Formularz konektora Confluence Chmura

Wariant Chmura wymaga adresu witryny oraz danych dostępowych:

PoleCo robiPrzykład
Nazwa konektorawłasna nazwa do rozpoznania na liścieConfluence firmowy
Adres URL witryny Atlassianpodstawowy adres witryny w Atlassian Cloudhttps://firma.atlassian.net
Token APIpoświadczenie konta serwisowego, ten sam co dla JiryATATT3xFfGF0... albo $$ATLASSIAN_TOKEN
Email kontaadres konta, na którym wygenerowano tokenq247-service@firma.pl albo $$ATLASSIAN_USER

Oba pola danych dostępowych przyjmują nazwę zmiennej środowiskowej z przedrostkiem $$ zamiast samej wartości, tak jak w Jirze. Jeśli konektor Jiry już z tego korzysta, tutaj można wskazać te same zmienne, bo token w Atlassian Cloud jest wspólny dla obu produktów.

Formularz konektora Confluence On-Premise

Wariant On-Premise zamiast adresu witryny prosi o wersję instancji i dwa adresy:

PoleCo robiPrzykład
Confluence Wersjawersja instancji, wybierana z listy8.5.6
Confluence Podstawowy URLadres instancji Confluencehttps://wiki.firma.pl
Adres URL serwera wtyczkiadres, pod którym Confluence zobaczy wtyczkęhttps://ep-plugin.firma.pl
Port serwera wtyczkiport, na którym wtyczka faktycznie nasłuchuje, zwykle port HTTPS8443
Token API / hasłopoświadczenie konta serwisowego: osobisty token dostępu albo hasło podawane razem z nazwą użytkownika APIosobisty token dostępu konta serwisowego
Nazwa użytkownika APIlogin konta serwisowego, opcjonalnyzostaw pusty przy uwierzytelnianiu tokenem

Wersję instancji sprawdzisz w Confluence: ikona zębatki, następnie Konfiguracja główna, a w niej Administrator → Informacje systemowe. Wyświetli się nazwa z numerem, na przykład "Confluence 8.5.6".

Pola adresu i portu serwera wtyczki pojawiają się tylko w trybie webhook. Adres URL serwera wtyczki działa tak samo jak w Jirze i podlega temu samemu zastrzeżeniu: służy wyłącznie do zbudowania adresu webhooka do skopiowania, a Q247 sam się pod ten adres nie łączy.

Kroki 2a i 2b dotyczą tylko trybu webhook. W trybie odpytywania API są zbędne i po zapisaniu formularza można przejść od razu do kroku 3.

2a. Wariant Chmura: połączenie aplikacji z organizacją​

Drugi krok formularza pokazuje pole Klucz API EP Connect z przyciskiem "Skopiuj klucz".

Confluence ma na liście Manage apps własny wpis, niezależny od wpisu Jiry, i inaczej nazwane pole:

  1. W Confluence przejdź do listy zainstalowanych aplikacji i znajdź Q247.
  2. Wybierz Configure.
  3. Wklej klucz w pole Connect with your existing Q247 account.

Instalacja samej aplikacji, jeśli jeszcze jej nie ma, opisana jest na stronie Jiry. Ten sam link instalacyjny obsługuje oba produkty, a każdy z nich konfiguruje się osobno.

2b. Wariant On-Premise: webhook w instancji Confluence​

Drugi krok formularza pokazuje pole URL webhooka EP z przyciskiem "Skopiuj URL". Adres zawiera losowy klucz Twojej organizacji, więc obchodź się z nim jak z hasłem.

Rejestracja po stronie Confluence:

  1. Ikona zębatki, następnie Konfiguracja główna.
  2. W lewym panelu Ustawienia → Elementy webhook.
  3. Przycisk Utwórz element webhook.
  4. Wypełnij Nazwę i wklej adres w pole URL.
  5. W sekcji Zdarzenia zaznacz utworzenie strony, aktualizację strony i utworzenie komentarza.
  6. Kliknij Testuj połączenie. To jedyne wbudowane sprawdzenie po stronie Atlassiana i warto z niego skorzystać, zanim zapiszesz.
  7. Kliknij Zapisz.

Kreator konektora On-Premise podaje w instrukcji nazwę drugiego produktu Atlassiana, przez co odsyła do instancji Jiry. Jest to ten sam błąd komunikatu, który opisuje strona Jiry.

3. Przypisanie źródła do projektu​

W Źródłach przycisk "Dodaj źródła" pozwala dodać źródło typu Confluence, podając klucz przestrzeni i projekt Q247, do którego ma należeć. Alternatywnie robi się to z poziomu Projektu, przez "Przypisz źródło".

Formularz Przypisz źródło z wybranym Confluence

Jedna przestrzeń należy do jednego projektu Q247. Gdy dokumentacja jednego produktu jest rozproszona po kilku przestrzeniach, wpisz wszystkie ich klucze w jednym formularzu, rozdzielone przecinkami, na przykład SUPPORT, DOCS, PLATFORM.

Formularz przypisania i pozostałe typy źródeł opisuje zakładka Źródła w szczegółach projektu.

Weryfikacja i diagnostyka​

Statusy konektora i kolejność sprawdzania przy braku danych są takie same jak dla Jiry, z dwiema różnicami. Sygnały właściwe dla trybu odpytywania API opisuje osobna podsekcja.

→ Diagnostyka trybu API

Pierwsza różnica dotyczy trybu webhook: przycisk testu połączenia w formularzu webhooka Confluence On-Premise od razu powie, czy instancja w ogóle dosięga wtyczki. To eliminuje część możliwych przyczyn, zanim zaczniesz szukać dalej.

Druga: gdy strony są przetwarzane, ale wkład nie pojawia się przy właściwych osobach, sprawdź opcję widoczności adresów e-mail opisaną w wymaganiach wstępnych. Ten objaw nie wygląda na problem z integracją, bo integracja formalnie działa.

Zakres przetwarzanych danych​

Treść strony i jej historia zmian analizowane są lokalnie przez wtyczkę. Do Q247 trafiają wynik kaloryczny i metadane zdarzenia, między innymi identyfikator strony, klucz przestrzeni, adres URL, imię i nazwisko oraz adres e-mail autora, rodzaj zdarzenia (wersja strony albo komentarz), czas zdarzenia, lista zmienionych pól, liczbowe podsumowanie zmian oraz adres instancji Confluence podany w formularzu konektora.

Przy uzgadnianiu ostatnich 24 godzin po przejściu na tryb API i przy uzupełnianiu danych historycznych wtyczka przekazuje dodatkowo identyfikator konta autora w Confluence i jego aliasy. W wariancie On-Premise wśród aliasów może się znaleźć adres zastępczy opisany w wymaganiach wstępnych.

Jedno zastrzeżenie do zakresu

Q247 rozpoznaje powiązanie strony z ticketem, wyszukując jego identyfikator w treści strony, tytule i opisie wersji. Rozpoznany identyfikator jest przekazywany do Q247, więc fragment treści strony trafia do backendu, jeśli zawiera odwołanie do ticketu. Poza tym przypadkiem treść stron i komentarzy nie opuszcza infrastruktury, w której działa wtyczka.

Zakres wymiany danych z wtyczką opisuje szerzej Bezpieczeństwo Enterprise Plugin.

Zobacz też​