Uma nova versão do ZPM foi publicada, a 0.4.0 Novidades da nova versão * Adicionado o suporte a pacotes Implantados, publicação e instalação * Suporte a múltiplos servidores de registro, ex. servidores de registro públicos de comunidades, privados corporativos e outros, incluindo código embutido Python * Habilidade de exibição de todas as versões e pacotes de origem na busca * Corrigido o problema de pacotes com código pré carregado * Expandido o limite de tamanho de argumentos na chamada ## Múltiplos registros Agora é possível definir mais de um registro em sua instância e assim, você poderá utilizar registros públicos de comunidades, de teste ou privados corporativos ao mesmo tempo. Basta utilizar outro nome para o registro Por exemplo, podemos adicionar um registro de teste:
zpm:USER>repo -n test -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42 test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> zpm:USER>repo -list test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> registry Source: https://pm.community.intersystems.com Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? NoE além desta alteração, agora é possível redefinir propriedades para registros apenas enviando o nome de um registro existente. Por exemplo, atualizando apenas a senha:
zpm:USER>repo -n test -pass PassWord42 test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set>## Pacotes Implantados A partir da versão 0.4.0, o ZPM passou a suportar pacotes implantados. O reduzido module.xml pode parecer como o exibido abaixo, o importante aqui é a flag `Deploy="true"`
<span class="php"><span class="hljs-meta">xml version=<span class="hljs-string">"1.0"</span> encoding=<span class="hljs-string">"UTF-8"</span><span class="hljs-meta">?></span></span>
<span class="hljs-tag"><<span class="hljs-name">Export</span> <span class="hljs-attr">generator</span>=<span class="hljs-string">"Cache"</span> <span class="hljs-attr">version</span>=<span class="hljs-string">"25"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Document</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"demo.ZPM"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Module</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Name</span>></span>demo<span class="hljs-tag"></<span class="hljs-name">Name</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Version</span>></span>1.0.0<span class="hljs-tag"></<span class="hljs-name">Version</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Description</span>></span>DEMO.<span class="hljs-tag"></<span class="hljs-name">Description</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Keywords</span>></span>demo<span class="hljs-tag"></<span class="hljs-name">Keywords</span>></span>
<span class="hljs-tag"><<span class="hljs-name">SourcesRoot</span>></span>src<span class="hljs-tag"></<span class="hljs-name">SourcesRoot</span>></span>
<span class="hljs-tag"><<span class="hljs-name">Resource</span> <span class="hljs-attr">Name</span>=<span class="hljs-string">"Sample.Demo.PKG"</span> <span class="hljs-attr">Deploy</span>=<span class="hljs-string">"true"</span>/></span>
<span class="hljs-tag"></<span class="hljs-name">Module</span>></span>
<span class="hljs-tag"></<span class="hljs-name">Document</span>></span>
<span class="hljs-tag"></<span class="hljs-name">Export</span>></span>
O processo de implantação é o mesmo que o anterior, você deve utilizar o comando load para carregar o módulo em modo desenvolvimento (por padrão)
zpm <span class="hljs-string">"load /home/irisowner/myproject"</span>
Neste caso, o zpm irá carregar o código fonte e ignorar a flag Deploy devido ao Modo Desenvolvimento e assim, você poderá alterar o código.
### Publicando
Para publicar um módulo Implantado você deverá utilizar seu próprio registro ou poderá utilizar registros de teste de comunidades para testes.
zpm:USER>publish demo -DPublishTo=test [USER|demo] PrepareDeploy START [USER-PACKAGE-429287|demo] PrepareDeploy SUCCESS [USER-PACKAGE-429287|demo] Reload START (/home/irisowner/zpm/packages/demo/) [USER-PACKAGE-429287|demo] Reload SUCCESS [demo] Module object refreshed. [USER-PACKAGE-429287|demo] Validate START [USER-PACKAGE-429287|demo] Validate SUCCESS [USER-PACKAGE-429287|demo] Compile START [USER-PACKAGE-429287|demo] Compile SUCCESS [USER-PACKAGE-429287|demo] Activate START [USER-PACKAGE-429287|demo] Configure START [USER-PACKAGE-429287|demo] Configure SUCCESS [USER-PACKAGE-429287|demo] Activate SUCCESS [USER-PACKAGE-429287|demo] Package START [USER-PACKAGE-429287|demo] MakeDeployed START [USER-PACKAGE-429287|demo] MakeDeployed SUCCESS [USER|demo] Package SUCCESS [USER|demo] Register START [USER|demo] Register SUCCESS [USER|demo] Publish START [USER|demo] Publish SUCCESSQuando o ZPM verifica que o pacote utiliza a flag Deploy=true para alguns recursos, para propósitos de empacotamento e publicação, ele cria um novo namespace temporário, carrega o pacote lá, implanta o código e empacota o que resta sem o código-fonte original, onde não deveria estar. O log exibe cada passo e o namespace onde ele foi executado. Um parâmetro adicional `-DPublishTo=test`, define o nome do registro onde se publicar o pacote. E se você desejar, você poderá alterar o número da versão também `-DNewVersion=1.0.0` ### Instalação de pacotes Implantados A instalação é feita como usualmente , mas você não poderá instalar o pacote implantado, ou qualquer pacote no modo de produção, se já tiver o pacote instalado no modo de desenvolvimento.
zpm:USER>install demo ERROR! Cannot install 'demo' over previously installed in developer modeVocê precisaria desinstalar o pacote instalado no modo de desenvolvimento ou usar um namespace ou instância limpa para ele. É importante lembrar que os pacotes implantados não possuem código-fonte, portanto, o empacotamento deve ser concluído em uma versão específica do IRIS que suporte o desenvolvedor. O registro suporta várias versões de plataforma para uma versão específica do pacote, portanto, durante a instalação, o zpm solicitará a versão para a plataforma. Para comparar a versão, ele usa apenas a maior e a menor parte da versão IRIS, por exemplo. 2022.2, 2021.1. Quando você tentar instalar o pacote em uma versão não suportada do IRIS, receberá o erro
zpm:USER>install test/demo ERROR! Deployed package 'demo' 1.0.0 not supported on this platform 2022.1.Instalação com sucesso
zpm:USER>install test/demo [USER|demo] Reload START (/usr/irissys/mgr/.modules/USER/demo/1.0.0/) [USER|demo] Reload SUCCESS [demo] Module object refreshed. [USER|demo] Validate START [USER|demo] Validate SUCCESS [USER|demo] Compile START [USER|demo] Compile SUCCESS [USER|demo] Activate START [USER|demo] Configure START [USER|demo] Configure SUCCESS [USER|demo] Activate SUCCESS## Imagens Docker com ZPM O ZPM mais recente já está disponível com a Comunidade IRIS e o ZPM pré-instalado Nomes das imagens * intersystemsdc/iris-community * intersystemsdc/irishealth-community * intersystemsdc/iris-ml-community * intersystemsdc/irishealth-ml-community E tags disponíveis * tag de versão mais recente e completa 2022.1.0.209.0-zpm * prévia e tag de versão completa 2022.2.0.345.0-zpm * 2021.2.0.651.0-zpm Todas as imagens estão disponíveis para x86-64 e ARM64 pelo mesmo nome.