Запускаем плагин в Atlassian SDK в докере

Привет!

Когда Вы разрабатываете свой плагин для Atlassian Jira, то вы используете Atlassian SDK. Если Вы хотите посмотреть результаты своей работы, то Вы используете atlas-run или atlas-debug для запуска Jira с Вашим плагином из Atlassian SDK. В этой статье я покажу Вам, как запустить Ваш плагин через Atlassian SDK в докере.

Для того, чтобы повторить все шаги из этой статьи, Вам нужен будет docker.

Собираем образ докера

Для того, чтобы собрать образ докера, Вам нужно создать вот такой Dockerfile (находится здесь):

FROM openjdk:11

# Maintainers on this project are the following:
MAINTAINER Alexey Matveev <ru.matveev.alexey@gmail.com>

RUN echo "deb https://packages.atlassian.com/atlassian-sdk-deb stable contrib" >>/etc/apt/sources.list \
    && wget https://packages.atlassian.com/api/gpg/key/public  \
    && apt-key add public \
    && apt-get update \
    && apt-get install --yes atlassian-plugin-sdk \
    && mkdir /opt/atlas \
    && cd /opt/atlas


CMD ["atlas-debug"]

Что происходит в этом файле?

FROM openjdk:11

Этой строкой мы говорим, что строим образ на основе образа openjdk 11, что означает, что наша Jira будет использовать openjdk 11. Если Вы хотите другую версию Java, то можете заменить эту строчку на вот такую для использования openjdk 8:

FROM openjdk:8

или вот такую

FROMjava:8-jdk

В этом случае Вы будете использовать Oracle JDK 8.

RUN echo "deb https://packages.atlassian.com/atlassian-sdk-deb stable contrib" >>/etc/apt/sources.list \
    && wget https://packages.atlassian.com/api/gpg/key/public  \
    && apt-key add public \
    && apt-get update \
    && apt-get install --yes atlassian-plugin-sdk \
    && mkdir /opt/atlas \
    && cd /opt/atlas

Эта строчка устанавливает последнюю версию Atlassian SDK в образ. Если Вы хотите использовать определенную версию Atlassian SDK, то замените строчку на вот такую:

RUN echo "deb https://packages.atlassian.com/atlassian-sdk-deb stable contrib" >>/etc/apt/sources.list \
    && wget https://packages.atlassian.com/api/gpg/key/public  \
    && apt-key add public \
    && apt-get update \
    && apt-get install --yes atlassian-plugin-sdk=8.2.2 \
    && mkdir /opt/atlas \
    && cd /opt/atlas

Хорошо. С Dockerfile разобрались. Давайте соберем образ.

Перейдем в папку с Dockerfile и запустим вот такую команду:

docker build --tag atlassian-sdk ./

В результате этой команды будет создан образ с тэгом “atlassian-sdk”. Если Вы хотите поменять тэг, то измените atlassian-sdk на любое другое значение.

Вот вывод команды у меня:

Alexeys-MBP-2:docker-atlassian-plugin-sdk alexm$ docker build --tag atlassian-sdk ./
Sending build context to Docker daemon  197.1kB
Step 1/4 : FROM openjdk:11
 ---> a16650ebd079
Step 2/4 : MAINTAINER Alexey Matveev <ru.matveev.alexey@gmail.com>
 ---> Running in fb1180b01fdf
Removing intermediate container fb1180b01fdf
 ---> ddeb6031a34b
Step 3/4 : RUN echo "deb https://packages.atlassian.com/atlassian-sdk-deb stable contrib" >>/etc/apt/sources.list     && wget https://packages.atlassian.com/api/gpg/key/public      && apt-key add public     && apt-get update     && apt-get install --yes atlassian-plugin-sdk     && mkdir /opt/atlas     && cd /opt/atlas
 ---> Running in 6b2f4dfbc825
--2020-08-13 09:58:27--  https://packages.atlassian.com/api/gpg/key/public
Resolving packages.atlassian.com (packages.atlassian.com)... 52.215.192.157, 52.215.192.155, 52.215.192.156
Connecting to packages.atlassian.com (packages.atlassian.com)|52.215.192.157|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: ‘public’

     0K .....                                                  58.4M=0s

2020-08-13 09:58:27 (58.4 MB/s) - ‘public’ saved [5352]

Warning: apt-key output should not be parsed (stdout is not a terminal)
OK
Get:1 http://deb.debian.org/debian buster InRelease [122 kB]
Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 https://packages.atlassian.com/atlassian-sdk-deb stable InRelease [3648 B]
Get:5 http://security.debian.org/debian-security buster/updates/main amd64 Packages [218 kB]
Get:6 http://deb.debian.org/debian buster/main amd64 Packages [7906 kB]
Get:7 https://packages.atlassian.com/atlassian-sdk-deb stable/contrib amd64 Packages [1788 B]
Get:8 http://deb.debian.org/debian buster-updates/main amd64 Packages [7868 B]
Fetched 8378 kB in 9s (902 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  atlassian-plugin-sdk
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 49.2 MB of archives.
After this operation, 68.0 MB of additional disk space will be used.
Get:1 https://packages.atlassian.com/atlassian-sdk-deb stable/contrib amd64 atlassian-plugin-sdk all 8.2.2 [49.2 MB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 49.2 MB in 39s (1268 kB/s)
Selecting previously unselected package atlassian-plugin-sdk.
(Reading database ... 12561 files and directories currently installed.)
Preparing to unpack .../atlassian-plugin-sdk_8.2.2_all.deb ...
Unpacking atlassian-plugin-sdk (8.2.2) ...
Setting up atlassian-plugin-sdk (8.2.2) ...
If you previously installed a version prior to version 4.0, you will need to remove all references to the atlassian-plugin-sdk directory from your PATH environment variable.
Removing intermediate container 6b2f4dfbc825
 ---> 4bd50cfcd874
Step 4/4 : CMD ["atlas-debug"]
 ---> Running in 0091181fa408
Removing intermediate container 0091181fa408
 ---> 9441e53a1b65
Successfully built 9441e53a1b65
Successfully tagged atlassian-sdk:latest

Запускаем контейнер

Теперь давайте запустим контейнер из этого образа:

docker run -i -t -p 2990:2990 atlassian-sdk:latest atlas-run-standalone --product jira

После того, как Jira запустилась, Вы увидите вот такие строчки:

[INFO] [talledLocalContainer] Tomcat 8.x started on port [2990]
[INFO] jira started successfully in 1187s at http://localhost:2990/jira
[INFO] Type Ctrl-C to shutdown gracefully

Откройте в браузере http://localhost:2990/jira и Вы увидите запрос на ввод пароля:

Хорошо. Jira поднялась. Теперь давайте установим в эту Jira наш плагин.

Перейдите в папку плагина и запустите вот такую команду:

atlas-install-plugin

По завершению работы команды Вы увидите вот такие строчки:

[INFO] Install Plugin: Uploading 'sil-tablegrid-next-generation-connector-1.0.4.jar' to server via UPM: http://localhost:2990/jira
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 19.156 s
[INFO] Finished at: 2020-08-13T12:47:33+03:00
[INFO] ------------------------------------------------------------------------

Теперь перейдите в Вашу Jira в manage apps и Вы увидите Ваш плагин:

Мой плагин sil-groovy-runner появился. Но почему он неактивен?

Я думаю, что в Вашем случае все будет хорошо. Просто мой плагин зависит от SIL engine. Этот плагин не установлен в Jira и поэтому мой плагин неактивен.

Зависимости для SIL engine прописаны в pom.xml. Хорошо бы было запустить мой плагин через atlas-debug. Но как это сделать?

Остановите запущенный контейнер и удалите его.

Запускаем с atlas-debug

Переходим в папку с плагином и запускаем вот такую команду:

docker run -i -t --volume $(pwd)/:/opt/atlas:delegated -p 2990:2990 -p 5005:5005 atlassian-sdk:latest /bin/sh -c 'cd /opt/atlas; atlas-debug'

Здесь мы монтируем папку плагина в папку /opt/atlas в контейнере (я использую режим delegated так как это значительно убыстряет работу контейнера в macos) и запускаем atlas-debug из этой папки.

После того, как Jira запустилась, откроем http://localhost:2990/jira в браузере и перейдем в Manage Apps

Наш плагин установлен и активен.

Ну, и последним штришком давайте что-нибудь поменяем в плагине и посмотрим, а подхватит ли docker.

Откроем Groovy Editor в моем плагине:

Перед редактором Groovy я хочу вставить надпись WELCOME!

Давайте попробуем. Я изменил нужный файл и сохранил его. Я менял soy шаблон, поэтому собирать плагин не нужно. Изменения должны быть видны сразу.

Давайте посмотрим:

Да, все получилось!

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Leave a Reply

%d bloggers like this:

Spelling error report

The following text will be sent to our editors: