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?     No
E 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 SUCCESS
Quando 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 mode
Você 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.