Proceedings of the 9th International Conference "Distributed Computing and Grid Technologies in Science and Education" (GRID'2021), Dubna, Russia, July 5-9, 2021 JIRA PLUGIN FOR THE ALICE INSTANCE А. Kondratyeva, A. Bondyakov Meshcheryakov Laboratory of Information Technologies, Joint Institute for Nuclear Research Russia, 141980, Dubna, Moscow region, Joliot-Curie, 6 E-mail: a kondratyev@jinr.ru As a bug tracking and project management system, the ALICE experiment uses Jira Software, which provides a wide range of configuration options. Jira also allows one to significantly expand the basic functionality with custom plugins. In this work, the LinkedIssuesHasStatus plugin for the JIRA service of the ALICE experiment is developed and implemented. The plugin returns tickets that link issues in the specified status and that are linked with the specified linking type. Keywords: ALICE, Jira, Java Andrey Kondratyev, Aleksey Bondyakov Copyright © 2021 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). 185 Proceedings of the 9th International Conference "Distributed Computing and Grid Technologies in Science and Education" (GRID'2021), Dubna, Russia, July 5-9, 2021 1. Introduction Jira [1] is based on Java [2] and runs on several popular database management systems and operating systems. The main accounting element in the system is an issue. It contains the project name, theme, type, priority, components and content. The issue can be extended with additional fields, applications or comments. It can be edited, or one can simply change its status, for example, from "open" to "closed". Possible state transitions are determined through a custom workflow. Any changes to the issue are logged. Jira has a large number of configuration options: for each application, a separate task type can be defined with its own workflow, a set of statuses, one or several views (screens). In addition, with the help of so-called "schemes", for each individual Jira project, one can define its own access rights, behavior and visibility of fields, etc. 2. Jira features Table 1 shows popular bug tracking and project management systems, which received updates no earlier than 2018, and their main features. All information was obtained from open sources and the Internet. As shown, the Jira server side works with all popular databases and has integration with the majority of source control systems. Jira enables workflow customization and has different user interfaces such as applications for Android [3] and iOS [4]. Table 1. Popular bug tracking and project management systems 3. ALICE Jira instances The ALICE experiment [5, 6, 7] has two Jira instances, i.e. develop [8] and production [9]. The develop instance is used to test new features, versions and plugins. The production instance is for general use. Both instances have the following system specifications:  Jira v.8.17;  CentOS 7;  PostgreSQL. According to statistics obtained in July 2021, the ALICE Jira production instance has:  4,350 registered users;  106 projects in 15 categories;  32,354 issues;  68 statuses and 51 issue types; 186 Proceedings of the 9th International Conference "Distributed Computing and Grid Technologies in Science and Education" (GRID'2021), Dubna, Russia, July 5-9, 2021  more than 20 custom plugins installed;  API for user and e-group management. Due to the large number of users, projects and links between issues, the LinkedIssuesHasStatus plugin was developed and implemented to make working with issues more convenient, faster and more efficient. The plugin returns tickets that link issues in the specified status and that are linked with the specified linking type. 4. Jira plugins and JQL functions Jira plugins are also known as Jira apps or Jira add-ons. These are pieces of software that plug into the Jira task management platform and provide new and enhanced functionality. There are two ways to install plugins into the Jira instance:  Install the plugin using the Jira marketplace;  Upload the custom plugin yourself. JQL functions are among the extension points that JQL (Jira Quick Language) provides to developers. Functions allow calculating values at runtime within a JQL query. They are easy to write and can be surprisingly powerful. 5. Plugin scheme Figure 1 illustrates the LinkedIssuesHasStatus plugin scheme implemented on the ALICE Jira develop instance. Figure 1. LinkedIssuesHasStatus plugin scheme After calling a JQL function, a full list of issues, a list of statuses and a list of issue link types are generated. Lists of statuses and link types are created since each Jira instance can have its own custom statuses and link types. It is possible to come up with the status and link type as one wants. A list of linked issues is then generated. After that, the plugin can work in four ways:  The function is called without input parameters. Using a special Java method getValues(), a list of linked issues obtained earlier is displayed on the screen.  The function is called with a status as an input parameter. Issues with a status called in the JQL function as an input parameter are collected from the list of linked issues obtained earlier. Then, using the getValues() method described above, a list of linked 187 Proceedings of the 9th International Conference "Distributed Computing and Grid Technologies in Science and Education" (GRID'2021), Dubna, Russia, July 5-9, 2021 issues that have the requested status is displayed on the screen. o It is possible to call a JQL function with more than one status as input parameters. The output will show a list of linked issues that have a status declared as the first parameter and a link to the issues with a status declared as the second parameter. For example, three statuses "Waiting", "Closed" and "Open" are declared as the first, second and third input parameters. As an output, issues with the "Waiting" status that have a link to the issues with the "Closed" status and issues with the "Waiting" status that have a link to the issues with the "Open" status are shown. There are no restrictions on the number of statuses as input parameters.  The function is called with a status and an inward link type as input parameters. After all statuses as input parameters it is possible to put an issue link type. In Jira, links to issues have 6 default types. Custom types can also be created. These types have inward or outward descriptions. The inward description denotes a description of how the issue is affected by other issues. In this case, issues with a status called in the JQL function as an input parameter are collected from the list of linked issues obtained earlier. After that, the link type from the input is compared with the list of link types. Issues with an inward link type are collected from the list of issues with the requested status. Then, using the getValues() method described above, a list of linked issues that have the requested status and requested inward link type is displayed on the screen. o It is possible to call a JQL function with more than one status as input parameters. The link type should be the last parameter. The output will show a list of linked issues that have a status declared as the first parameter, a link to the issues with a status declared as the second parameter and an issue link type requested as the last parameter.  The function is called with a status and an outward link type as input parameters. Another description for issue link types is the outward description, i.e. a description of how the issue affects other issues. In this case, issues with a status called in the JQL function as an input parameter are collected from the list of linked issues obtained earlier. After that, the link type from the input is compared with the list of link types. Issues with an outward link type are collected from the list of issues with the requested status. Then, using the getValues() method described above, a list of linked issues that have the requested status and requested outward link type is displayed on the screen. o It is possible to call a JQL function with more than one status as input parameters. The link type should be the last parameter. The output will show a list of linked issues that have a status declared as the first parameter, a link to the issues with a status declared as the second parameter and an issue link type requested as the last parameter. 6. Results and future plans As a result, the LinkedIssuesHasStatus plugin was developed, implemented and tested on the ALICE Jira develop instance. Based on the logs, the following results were obtained:  The developed plugin is workable;  No errors were found while the plugin was running. Future plans:  Integrate the plugin into the production instance;  Update the plugin regularly;  Identify and correct errors. 188 Proceedings of the 9th International Conference "Distributed Computing and Grid Technologies in Science and Education" (GRID'2021), Dubna, Russia, July 5-9, 2021 7. References [1] Atlassian Jira main page // URL: https://www.atlassian.com/ru/software/jira (accessed 01.07.2021) [2] Java main page // URL: https://www.java.com/ (accessed 01.07.2021) [3] Android main page // URL: https://www.android.com/intl/ru_ru/ (accessed 01.07.2021) [4] iOS main page // URL: https://www.apple.com/ru/ios/ (accessed 01.07.2021) [5] ALICE Collaboration, F. Carminati, P. Foka, P. Giubellino, A. Morsch, G. Paic, J-P Revol et al., ALICE: Physics Performance Report – Vol. 1 // J. Phys. G: Nucl. Part. Phys. - №30 – 2004 - PII: S0954-3899(04)83684-3 [6] ALICE Technical Design Report: Upgrade of the Online – Offline computing system ,J. Adam et al. // Tech. rep. CERN-LHCC-2015-006/ALICE-TDR-019 - 2015 [7] Interaction technology of the jAliEn client and ALICE central services, Korenkov V.V., Kondratyev A.O., Bondyakov A.S.// Modern Information Technologies and IT Education, Vol. 3, ISSN:2411-1473 - 2019, in Russian [8] ALICE Jira develop instance // URL: https://dev2.its.cern.ch/ (accessed 01.07.2021) [9] ALICE Jira production instance // URL: https://alice.its.cern.ch/ (accessed 01.07.2021) 189