Введение в разработку плагинов для Jira

Добро пожаловать в мир разработки плагинов Jira, где возможности безграничны, а сложность может быть пугающей. Но не бойтесь, дорогой разработчик, это руководство поможет вам создать плагин для Jira с использованием Java, с долей юмора и множеством практических советов.

Почему Java?

Java — основной язык Jira, и если вы планируете разрабатывать плагины для Jira Server или Data Center, Java — ваш лучший выбор. Atlassian SDK, основной инструмент для разработки таких плагинов, тесно связан с Java.

Настройка среды Прежде чем погрузиться в тонкости разработки плагинов, необходимо настроить среду. Вот пошаговое руководство:

  • Установка Atlassian SDK: Чтобы разработать плагины для Jira Server или Data Center, вам потребуется Atlassian SDK. Для установки выполните следующую команду:

    curl -O https://marketplace.atlassian.com/download/plugins/jira/atlassian-plugin-sdk/version/8
    tar -xvf atlassian-plugin-sdk-8.x.x.tar.gz
    cd atlassian-plugin-sdk-8.x.x
    
  • Создание нового плагина: После установки SDK можно создать новый плагин с помощью команды:

atlas-create-jira-plugin

Эта команда запросит информацию о плагине, такую как название, group ID и версия. Пример взаимодействия может выглядеть так:

Define value for 'groupId': com.example.myplugin
Define value for 'artifactId': my-jira-plugin
Define value for 'version': 1.0-SNAPSHOT
Define value for 'package': com.example.myplugin

Понимание дескриптора плагина Сердце любого плагина Jira — файл atlassian-plugin.xml. Этот файл является дескриптором вашего плагина, сообщающим Jira о его функциях и интеграции с системой. Вот пример того, как может выглядеть такой файл:

<atlassian-plugin key="com.example.myplugin" name="My Jira Plugin">
    <plugin-info>
        <description>This is my first Jira plugin.</description>
        <vendor-name>Maxim Zhirnov</vendor-name>
        <vendor-url>https://example.com</vendor-url>
    </plugin-info>
    <!-- Add your plugin modules here -->
    <customfield-type key="my-custom-field" name="My Custom Field" class="com.example.myplugin.MyCustomField">
        <description>The My Custom Field Plugin</description>
        <resource type="velocity" name="view" location="/templates/customfield/view.vm"/>
        <resource type="velocity" name="edit" location="/templates/customfield/edit.vm"/>
    </customfield-type>
</atlassian-plugin>

Сборка и развёртывание плагина

  • Сборка плагина: Для сборки перейдите в каталог плагина и выполните команду:
atlas-compile
atlas-package

Это скомпилирует код и упакует его в JAR-файл.

  • Развёртывание плагина: Чтобы развернуть плагин, нужно загрузить JAR-файл на сервер Jira. Выполните следующие шаги:
  1. Войдите в свой экземпляр Jira как администратор.
  2. Перейдите в раздел «Manage Apps».
  3. Нажмите «Upload App» и выберите JAR-файл.
  4. Следуйте инструкциям для завершения установки.

Использование Forge для Jira Cloud Если вы разрабатываете плагины для Jira Cloud, процесс немного отличается. Вам потребуется использовать платформу Forge от Atlassian, которая поддерживает широкий спектр языков программирования, включая JavaScript и Node.js.

  • Настройка Forge: Установите Forge CLI:
npm install -g @forge/cli
forge login
  • Создание приложения Forge: Выполните следующую команду для создания нового приложения:
forge create

Следуйте подсказкам для настройки приложения.

  • Написание пользовательских расширений UI: Forge позволяет создавать пользовательские расширения UI с помощью JavaScript и компонентов Forge UI. Пример простого расширения:
import { render, html } from '@forge/ui';

const App = () => {
  return html`
    <section>
      <h1>Welcome to My Jira Cloud App!</h1>
    </section>
  `;
};

export const run = render(<App />);
  • Использование Java с Forge: Хотя Forge предназначен в основном для JavaScript и Node.js, вы можете использовать Java для бэкенда. Интеграция Java с Forge:
  • Настройка бэкенда: Используйте Atlassian Connect для создания RESTful API на Java. Пример:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/my-endpoint")
public class MyEndpoint {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getHello() {
        return "Hello from Java!";
    }
}
  • Вызов бэкенда из Forge: Вызовите эту конечную точку из своего приложения Forge:
import { api, context } from '@forge/api';

const fetchHello = async () => {
  const response = await api.asApp().requestJira(`rest/my-endpoint`, {
    method: 'GET',
  });
  const hello = await response.json();
  return hello;
};

const App = () => {
  const [hello, setHello] = useState('');

  useEffect(() => {
    fetchHello().then(setHello);
  }, []);

  return html`
    <section>
      <h1>${hello}</h1>
    </section>
  `;
};

export const run = render(<App />);

Диаграмма: рабочий процесс разработки плагина Здесь приведена блок-схема, помогающая визуализировать рабочий процесс разработки плагина:

graph TD A("Install Atlassian SDK") -->|Install SDK| B("Create New Plugin") B -->|Create Plugin| C("Define Plugin Descriptor") C -->|Define Descriptor| D("Build Plugin") D -->|Build| E("Deploy Plugin") E -->|Deploy| F("Test Plugin") B("Install Forge CLI") -->|Install CLI| H("Create New Forge App") H -->|Create App| I("Write Custom UI Extensions") I -->|Write Extensions| J("Integrate Java Backend") J -->|Integrate Backend| K("Deploy Forge App") K -->|Deploy| L("Test Forge App") F -->|Test Server Plugin| M("Success") L -->|Test Cloud Plugin| C("Success")

Заключение Разработка плагинов для Jira может быть сложной, но интересной задачей. Независимо от того, работаете ли вы с Jira Server, Data Center или Cloud, понимание доступных инструментов и фреймворков имеет ключевое значение. С этим руководством у вас теперь есть прочная основа для создания собственных плагинов Jira. Не бойтесь экспериментировать и расширять границы того, что можно достичь с помощью плагинов Jira.