ZPM – менеджер пакетов для InterSystems IRIS

    Менеджеры пакетов для различных платформ очень широко применяются, позволяют быстро установить и настроить многие готовые компоненты и библиотеки. А также используются для развертывания собственных решений. При этом важно, чтобы менеджер пакетов обрабатывал зависимости, т.е. если ваше приложение использует какую-то библиотеку определенной версии, то менеджер пакетов при установке вашего приложения также установит необходимую версию этой библиотеки.

    Теперь для InterSystems IRIS также доступен менеджер пакетов — ZPM.

    ZPM позволяет найти, установить, обновить модуль, а также может использоваться для публикации модулей. Каждый модуль может быть отдельным приложением, библиотекой, фреймворком, утилитой или примером использования технологий InterSystems.

    Менеджер пакетов ZPM


    ZPM состоит из двух компонентов:

    • Клиент (CLI)
      Утилита, которая устанавливается в ваш IRIS и используется для управления модулями (например, для установки)
    • Реестр (Registry)
      База данных модулей и метаинформации, которая используется для управления модулями.

    По умолчанию ZPM клиент настроен на использование реестра: pm.community.intersystems.com — это реестр сообщества разработчиков. В этом реестре опубликовано множество примеров, утилит и библиотек.

    Также вы можете поднять и использовать и свой собственный реестр (об этом будет ниже в этой статье).

    С чего начать


    1. Установите клиент ZPM


    Скачайте последнюю версию инсталлера по этой ссылке.

    Импортируйте скачанный класс в любую область любым удобным вам способом: через портал, через Студию или через терминал.

    USER>Do $System.OBJ.Load("/path/zpm.xml", "ck")

    Если вы используете Docker, то вы можете воспользоваться образами InterSystems IRIS Community Edition и InterSystems IRIS for Health Community Edition, которые уже содержат последнюю версию ZPM (подробнее в документации).

    2. Запуск ZPM


    После установки ZPM доступен в любой области.
    Чтобы использовать ZPM, достаточно набрать команду zpm в терминале и вы запустите интерфейс командной строки (CLI) менеджера пакетов ZPM.

    MYNS> zpm
    zpm: MYNS>

    C помощью команды help можно получить список всех доступных команд.

    zpm: MYNS>help


    3. Установка модуля


    В первую очередь с помощью команды search посмотрите список доступных модулей в реестре:

    zpm: MYNS>search
     
    registry https://pm.community.intersystems.com:
    analyzethis 1.1.4
    blocksexplorer 2.2.1
    dsw 2.1.41
    …
    

    Для установки последней версии модуля или обновления используется команда install. Установка будет выполнена в текущую область.

    zpm: MYNS>install dsw
     
    [mdx2json] 	Reload START
    [mdx2json] 	Reload SUCCESS
    [mdx2json] 	Module object refreshed.
    [mdx2json] 	Validate START
    [mdx2json] 	Validate SUCCESS
    [mdx2json] 	Compile START
    [mdx2json] 	Compile SUCCESS
    [mdx2json] 	Activate START
    [mdx2json] 	Configure START
    [mdx2json] 	Configure SUCCESS
    [mdx2json] 	Activate SUCCESS
    [dsw] 	Reload START
    [dsw] 	Reload SUCCESS
    [dsw] 	Module object refreshed.
    [dsw] 	Validate START
    [dsw] 	Validate SUCCESS
    [dsw] 	Compile START
    [dsw] 	Compile SUCCESS
    [dsw] 	Activate START
    [dsw] 	Configure START
    [dsw] 	Configure SUCCESS
    [dsw] 	Activate SUCCESS

    Как видно сначала производится установка модуля mdx2json, от которого зависит модуль dsw, а затем уже dsw.

    Вот и всё – модуль установлен и настроен!

    Многие команды имеют специальные флаги, например, флаг -v или -verbose позволяет увидеть подробности, например:

    zpm: MYNS>install dsw -v

    Ознакомьтесь с полным перечнем команд их аргументов и флагов на странице документации или используя команду help.

    Подготовка и публикация собственного пакета


    Для того, чтобы вы могли опубликовать собственный пакет, необходимо:

    • чтобы ваш код работал в InterSystems IRIS;
    • подготовить файл module.xml.

    В файле module.xml описан ваш пакет, входящие в пакет ресурсы, зависимости и компоненты необходимые при установке пакета (например, создание веб-приложений).

    Если вы до этого использовали InterSystems IRIS Installation Manifest (%Installer), то вы найдете много общего в module.xml и в XDATA блоке .

    Описание формата xml в документации

    Вы можете познакомиться с примерами module.xml для опубликованных модулей:
    github.com/isc-zpm/DeepSeeWeb/blob/master/module.xml
    github.com/isc-zpm/Samples-BI/blob/master/module.xml

    Для того, чтобы опубликовать свой пакет публичном реестре pm.community.intersystems.com достаточно опубликовать приложение в Open Exchange и указать его публичный репозиторий.

    Установить собственный реестр


    Создание собственного реестра не является обязательным, но с его помощью вы сможете проверить как собирается и устанавливается ваш модуль.

    Если вы планируете публиковать свое приложение в публичном реестре pm.community.intersystems.com, то рекомендуется сначала проверить все шаги в вашем локальном реестре.

    Чтобы установить собственный реестр – можно воспользоваться командой install.
    Перейдите в область реестра (далее будем считать, что называется REGISTRY) и выполните

    REGISTRY>zpm
    zpm: REGISTRY>install zpm-registry

    Проверьте, что ваш реестр работает – откройте в браузере страницу localhost:52773/registry/_ping (возможно надо указать другой порт, в зависимости от настроек вашего IRIS). При обращении к странице потребуется указать логин и пароль пользователя IRIS (например: _system/SYS).

    Если вы увидели {«message»:«ping»} – ваш реестр установлен успешно.

    Теперь настройте ваш ZPM клиент на работу с новым реестром.

    Выполните команду:

    zpm: MYNS>repo -r -n registry -url http://localhost:52773/registry/ -user _system -pass SYS

    Эта команда говорит, что ZPM клиенту, что в качестве удаленного реестра необходимо использовать реестр доступный по указанному URL и при обращении передавать указанные в аргументах -user и -pass логин и пароль соответственно.

    Опубликовать модуль


    Проверьте, что вы создали отдельную папку, в которой размещен module.xml и классы вашего модуля (классы принято размещать в папке /src). В примере далее этот модуль будет называться demo-module (имя задается в module.xml).

    Проверьте что вы переключились на тестовый реестр.

    С помощью команды load загрузите ваш код в текущую область:

    zpm: MYNS>load /path/to/module/folder
    [demo-module]  Reload START
    [demo-module]  Reload SUCCESS
    [demo-module]  Module object refreshed.
    [demo-module]  Validate START
    [demo-module]  Validate SUCCESS
    [demo-module]  Compile START
    [demo-module]  Compile SUCCESS
    [demo-module]  Activate START
    [demo-module]  Configure START
    [demo-module]  Configure SUCCESS
    [demo-module]  Activate SUCCESS

    Эта команда выполняет целый ряд действий – загружает и компилирует ваш код и конфигурирует ваш модуль.

    Теперь ZPM клиент знает все о вашем модуле и может его опубликовать.

    Для публикации используется команда module-action c аргументом publish:

    zpm: MYNS>module-action demo-module publish

    Команду module-action можно опускать, и записать короче:

    zpm: MYNS>demo-module publish
    [demo-module]  Reload START
    [demo-module]  Reload SUCCESS
    [demo-module]  Module object refreshed.
    [demo-module]  Validate START
    [demo-module]  Validate SUCCESS
    [demo-module]  Compile START
    [demo-module]  Compile SUCCESS
    [demo-module]  Activate START
    [demo-module]  Configure START
    [demo-module]  Configure SUCCESS
    [demo-module]  Activate SUCCESS
    [demo-module]  Package START
    Module exported to:
     	/var/folders/9f/r62h3fxj42b5fzb0hgnb28m40000gn/T/direyLtX5/demo-module-1.0.0/
     
    Module package generated:
     	/var/folders/9f/r62h3fxj42b5fzb0hgnb28m40000gn/T/direyLtX5/demo-module-1.0.0.tgz
    [demo-module]  Package SUCCESS
    [demo-module]  Register START
    [demo-module]  Register SUCCESS
    [demo-module]  Publish START
    [demo-module]  Publish SUCCESS

    При выполнении этой команды модуль сначала будет «собран» (т.е. подготовлен для публикации) и экспортирован во временную директорию, заархивирован и затем опубликован на активном в данный момент реестре.

    Теперь если вы выполните команду search вы должны увидеть ваш модуль в списке:

    zpm: MYNS>search                          
     
    registry http://localhost:52773/registry/:
    demo-module 1.0.0

    Для того, чтобы проверить, что установка проходит успешно — установите ваш модуль из тестового реестра с помощью ZPM в новую инсталляцию IRIS или новую область.

    Переключиться на реестр по умолчанию


    Чтобы переключиться на работу с реестром по умолчанию (pm.community.intersystems.com) используйте флаг -reset-defaults:

    zpm: MYNS>repo -r -n registry -reset-defaults


    Опубликовать модуль в реестре сообщества


    Вы можете опубликоовать ваш модуль в реестр сообщества (pm.community.intersystems.com) чтобы все разработчики на InterSystems могли его устанавливать и использовать в своих решениях.
    Для этого опубликуйте ваше решение в InterSystems Open Exchange — маркетплейсе для приложений на InterSystems и укажите при установке что решение является модулем Package Manager:

    Дополнительно вы можете посмотреть этот ролик об установке решений в Open Exchange.

    Нужна ваша помощь!


    ZPM поддерживается сообществом – пожалуйста сообщайте о всех возникающих проблемах или предложениях по улучшению – создавайте issues в репозитории проекта.

    Замечание относительно лицензии.

    ZPM клиент и реестр, расположенный на pm.community.intersystems.com, не поддерживаются InterSystems Corporation и представлены как есть по лицензии MIT.
    InterSystems
    InterSystems IRIS: СУБД, ESB, BI, Healthcare

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое