Перевод разработческой версии jira на PostgreSQL


Начал разбираться как заставить девелоперскую версию джиры работать на PostgreSQL вместо стандартной HSQLDB. В итоге очень долго искал подходящее руководство в интернете и смог найти полноценный гайд для mysql примерно через 2-3 часа поисков и параллельных попыток справиться с задачей самостоятельно вручную.

Ниже выкладываю итоговую последовательность действий, с помощью которой у меня получилось успешно сделать миграцию.

Подготовка системы

  1. На первом шаге вы создаете плагин через команду sdk atlas-create-jira-plugin
  2. В первый раз просто запускаете девелоперскую версию через atlas-run. При этом создается hsqldb версия базы, а также папка target, в которой находится папка jira/home.
  3. Выполняется первичная настройка (как создание проектов, тикетов и т.п.). Это те данные, которые не должны будут теряться после выполнения команды atlas-clean, чтобы они успешно пересоздавались.
  4. После этого сделайте бэкап системы: (System -> Import & Export -> Backup System).
  5. Выключите jira.

Настройка конфигов базы PostgreSQL

  1. Обновите файл target/jira/dbconfig.xml, заменив настройки hsqldb базы на настройки PostgreSQL:
    <?xml version=»1.0″ encoding=»UTF-8″?><jira-database-config>
    <name>defaultDS</name>
    <delegator-name>default</delegator-name>
    <database-type>postgres72</database-type>
    <schema-name>public</schema-name>
    <jdbc-datasource>
    <url>jdbc:postgresql://localhost:5432/jiradb</url>
    <driver-class>org.postgresql.Driver</driver-class>
    <username>postgres</username>
    <password>postgres</password>
    <pool-min-size>20</pool-min-size>
    <pool-max-size>20</pool-max-size>
    <pool-max-wait>30000</pool-max-wait>
    <pool-max-idle>20</pool-max-idle>
    <pool-remove-abandoned>true</pool-remove-abandoned>
    <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
    </jdbc-datasource>
    </jira-database-config>Конечно, необходимо обновить настройки подключения, выделенные жирным, чтобы они соответствовали настройке вашей базы.
    И да, указанная конфигурация отлично работает на версии PostgreSQL 9.4, хотя о поддержке этой версии в официальной документации ничего не сказано.
  2. Не удаляйте файлы базы database.* (это файлы hsql). Maven будет к ним обращаться когда ваша база postgres будет пустой. Просто оставьте их. После того как база postgres заполнится данными они не будут нужны.
  3. Запустите atlas-create-home-zip. При этом создается файл generated-test-resources.zip в папке target/jira.
  4. Скопируйте этот файл в удобное место, например в корневую папку, где лежит pom.xml
  5. Для того чтобы jira загружала необходимые данные — внесите изменения в pom.xml в секцию configuration плагина maven-jira-plugin. Необходимо добавить выделенную жирным строчку.
    <build>
    <plugins>
    <plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-jira-plugin</artifactId>
    <version>${amps.version}</version>
    <extensions>true</extensions>
    <configuration>
    <productVersion>${jira.version}</productVersion>
    <productDataVersion>${jira.version}</productDataVersion>
    <productDataPath>${basedir}/generated-test-resources.zip</productDataPath>

Получайте удовольствие

  1. Запустите atlas-run. В логе вы увидите много информационных сообщений о том, что не найдены таблицы.
  2. После загрузки системы — откройте урл с джирой, указанный в консоли после запуска.
  3. Вас перекинет на установку jira. На втором шаге выберите «импортировать существующие данные».
  4. Скопируйте файл бэкапа, полученный при подготовке системы в папку import. (по дефолту он будет лежать в export).
  5. Запустите импорт. Это решит проблему с лицензией (она импортируется вместе с данными)
  6. После завершения импорта вы можете спокойно заходить в jira как и раньше.
  7. Проверьте что все импортировалось правильно, открывайте пиво и начинайте разработку плагина!

Будьте счастливы!

Запускайте atlas-create-home-zip заново, если вы хотите использовать последние настройки jira.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *