8 cyklicznych zadań administratora Jira

By in
8 cyklicznych zadań administratora Jira

Tworzenie projektów, projektowanie flows, skryptowanie i administracja to na pewno jedne z ulubionych czynności wielu administratorów Jira. Ale od czasu do czasu każda instancja potrzebuje również porządków. Aby mieć pewność, że aplikacja ma się dobrze, zaplanuj rutynowe zadania administracyjne. W niniejszym poście przedstawiam checklistę, z którą cykliczne sprzątanie stanie się łatwiejsze.

Podczas przygotowywania listy natknąłem się na świetny artykuł na ten sam temat. Oddaje zatem w Wasze ręce mieszankę wiedzy ekspertów Atlassiana oraz mojego doświadczenia. Jeśli natomiast macie swoje sposoby na dbanie o kondycję Jira, podzielcie się w komentarzu!

1. Integrity checker
2. Mail queue
3. Resolutions
4. Nieużywane projekty
5. Nieaktywni użytkownicy
6. Nieużywane elementy
7. Nieużywane customfieldy
8. Upgrade

Przygotowania

  • umieść Annoucement Banner. Jeśli Twoje prace będą miały wpływ na środowisko produkcyjne, należy poinformować użytkowników.
  • dodaj swój adres do listy odbiorców na YOUR_JIRA_URL/plugins/servlet/troubleshooting/view/ -> Log Analyzer -> Periodic scan. Od tej pory będziesz dostawać raporty na podstawie cyklicznych skanów logów Jira<./li>
  • twórz cykliczne zadanie na prace rutynowe w Jira (możesz tą czynność zautomatyzować np. za pomocą skryptu).

1. Integrity checker

W miarę używania Jira, niektóre elementy będą wymagały sprawdzenia pod kątem spójności. Pomogą tu tzw. Integrity Checkers, które zweryfikują m.in. takie obszary jak statusy, workflows, permissions etc. Przy większych instancjach warto uruchomić checkery osobno, aby uniknąć błędów typu timeout.

2. Mail (errors) queue

Jeśli nie monitorujesz kolejki mailowej Jira, powinieneś od czasu do czasu sprawdzić ją ręcznie. W przypadku gdy znajdują się w niej jakieś wiadomości, może to być objaw błędnej konfiguracji. Kolejkę możesz podejrzeć otwierając menu administratora („.” lub „gg” na klawiaturze) i wpisując „mail queue” -> „errors”.

3. Resolutions

Pamiętaj, że dopóki wartość pola Resolution jest pusta dla zadania, jest ono traktowane jako otwarte. Należy tu sprawdzić następujące przypadki.

  • Pole Resolution jest puste mimo, że zadanie jest zakończone. Aby namierzyć taką anomalię, możesz użyć następującego jql’a:
statusCategory = Done and resolution is EMPTY

Jeśli w Twojej Jira istnieje kilka statusów w kategorii „Done”, a nie wszystkie z nich są ostatnimi w workflow, należy w jql użyć konkretnych nazw, np:

status = Closed and resolution is EMPTY

Jeśli filtr zwróci jakieś zadania, znaczy to, że workflows potrzebują poprawki. Ostatnia ich tranzycja powinna ustawiać wartość pola Resolution za pomocą Resolve Issue Screen albo postfunkcji.

  • Pole Resolution jest ustawione mimo, iż zadanie jest otwarte.
resolution is not EMPTY and statusCategory in ("To Do", "In Progress")

Ja to naprawić? Za każdym razem, gdy zadanie jest otwierane (wychodzi ze statusu kończącego), pole Resolution powinno być czyszczone (np. za pomocą postfunkcji).

4. Nieużywane projekty

Kolejnym sposobem na utrzymanie Jira w dobrej formie jest archiwizacja nieużywanych projektów. O ile taka opcja dostępna jest z definicji w Jira Cloud, o tyle Jira Server wymaga przygotowania. Możesz na przykład utworzyć specjalny Permission scheme, który ogranicza dostęp do zarchiwizowanego projektu jedynie do grona administratorów. Wówczas zadania z takich projektów nie będą pojawiać się w wynikach wyszukiwania dla innych użytkowników. Warto również utworzyć osobną kategorię projektową, np. „Archived Projects”. Załóżmy, że oba kroki zostały już wykonane. Jak zdecydować który projekt ma być zarchiwizowany jako kolejny?

"Project category" != "Archived projects" ORDER BY key ASC, updated DESC

Jeśli ostatnia aktualizacja w zadaniach (Updated) w danym projekcie była, powiedzmy, rok temu, jest to dobry kandydat do zarchiwizowania.

Pluginy, które mogą pomóc

Project Archiver for Jira
Cleaner for Jira

5. Nieaktywni użytkownicy

Oszczędzaj licencje! Zwykle nie ma powodu, aby przechowywać nieużywane konta jako aktywne. Poniższy SQL wyświetli wszystkich aktywnych użytkowników posortowanych po dacie ostatniego logowania.

SELECT d.directory_name AS "Directory",
u.user_name AS "Username",
u.active AS "Active",
u.email_address AS "E-mail",
to_timestamp(CAST(attribute_value AS BIGINT)/1000) AS "Last Login"
FROM cwd_user u
JOIN (
SELECT DISTINCT child_name
FROM cwd_membership m
JOIN licenserolesgroup gp ON m.parent_name = gp.GROUP_ID
) AS m ON m.child_name = u.user_name
JOIN (
SELECT * FROM cwd_user_attributes ca
WHERE attribute_name = 'login.lastLoginMillis'
) AS a ON a.user_id = u.id
JOIN cwd_directory d ON u.directory_id = d.id where u.active=1
ORDER BY "Last Login" ASC;

Więcej szczegółów oraz zapytań SQL w tym temacie znajdziecie tu.

Pluginy, które mogą pomóc

User Deactivator for Jira
Active User Filter
User Management for Jira
Cleaner for Jira

6. Nieużywane elementy

Zapomniane ekrany? Porzucone workflow`y? Każdy schemat posiada sekcję „inactive”, gdzie możesz znaleźć elementy, które nie są powiązane z żadnym projektem. Jeśli nie czekają one na wykorzystanie w lepszych czasach, zwykle można je bezpiecznie usunąć. Przejdź do menu administratora i wpisz schemat, który Cię interesuje. Elementy, które warto sprawdzić:

  • Workflows & Workflow Schemes
  • Screens, Screen Schemes & Issue Type Screen Schemes
  • Issue type schemes
  • Permission schemes
  • Notification Schemes

Zauważ, że aby usunąć screen nie może on być powiązany z żadnym Screen Scheme. Ten z kolei nie może być częścią Issue Type Screen Scheme, a ten ostatni nie może być przypisany do projektu. Dla workflows konfiguracja wygląda podobnie.

7. Nieużywane customfieldy

Poniższy filtr zwróci parametry customfieldów (names, ids, amount), przy czy ostatnie pole to ilość zadań, gdzie dany customfield ma przypisaną wartość.

SELECT CF.cfname, CF.id, count(CV.ISSUE) FROM customfield CF join customfieldvalue CV on CF.ID = CV.CUSTOMFIELD
group by CF.id order by count;

Możemy wybrać te, które nie mają uzupełnionej żadnej wartości w Jira i usunąć je. Pamiętaj, aby sprawdzić czy pole nie jest wykorzystywane w miejscach takich, jak Dashboards, JQL Filters, Screens i Workflows (a także w skryptach). Załóżmy, że pole które chcemy usunąć nazywa się Team i ma id=10000. Zapytania JQL będą wyglądały następująco:

Dashboards and gadgets
SELECT * FROM gadgetuserpreference
INNER JOIN portletconfiguration ON portletconfiguration.id = gadgetuserpreference.portletconfiguration
INNER JOIN portalpage ON portalpage.id = portletconfiguration.portalpage
WHERE
userprefvalue LIKE '%10000'
Filters
select * from searchrequest s where s.reqcontent like '%Team%' or s.reqcontent like '%cf[100000]%'
Screens
SELECT cf.id, fsli.fieldidentifier, cf.cfname, fs.name, fst.name FROM fieldscreenlayoutitem fsli
INNER JOIN fieldscreentab fst
ON fsli.fieldscreentab = fst.id
INNER JOIN fieldscreen fs
ON fst.fieldscreen = fs.id
INNER JOIN customfield cf
ON fsli.fieldidentifier = 'customfield_' || cf.id::text
WHERE fsli.fieldidentifier LIKE '%customfield_100000%'
Workflows
select * from jiraworkflows wf where wf.descriptor like '%customfield_100000%';
Pluginy, które mogą pomóc

Custom Fields Usage for Jira
Admin Tools for Jira
Cleaner for Jira

8. Upgrade

Upgrade aplikacji

Przejdź do sekcji Manage Apps i sprawdź które pluginy wymagają aktualizacji. Twoja checklista:

  • sprawdź ważność licencji
  • zapoznaj się z upgrade/release notes aplikacji
  • (opcjonalnie) usuń cache pluginów po aktualizacji
    • Zatrzymaj Jira
    • Usuń katalogi JIRA_HOME/plugins/.bundled-plugins oraz JIRA_HOME/plugins/.osgi-plugins
    • Włącz Jira
Upgrade Jira

Z procedurą możecie zapoznać się w tym artykule.

Powodznia! Komentarze i sugestie mile widziane:)

Leave a reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *