Pergunta

Foi-me explicado que se você deseja que o Artifactory gerencie seu repositório (o que eu faço), e se você não deseja escrever à mão seus próprios descritores Ivy (o que eu não faço), então suas opções são para qualquer:

  • Use Ivy RoundUp, que contém descritores Ivy além dos próprios artefatos;ou
  • Escreva um script para gerar os descritores para você;ou
  • Escreva uma transformação XML para converter entre esquemas de descritores Maven e Ivy

Depois de avaliar cuidadosamente minhas opções, decidi escrever um script Python para gerar esses descritores.Colocarei todos os artefatos que desejo implantar/instalar em meu repositório em um deploy/ pasta, e o script irá iterar sobre quaisquer artefatos que encontrar nesta pasta, consultar o usuário para obter informações sobre ele e, em seguida, realizar a implantação para mim, ali mesmo dentro do script.

Embora este último requisito não seja obrigatório, seria legal basta fazer com que o script acesse a API RESTful do Artifactory e implante o descritor e o artefato para mim, no local certo.

Esta página explica a API e é o tema da minha pergunta.

A única PUT A operação baseada na API expõe é esta:

PUT http://localhost:8080/artifactory/<repo>/<organization>/<module>/<version>/<artifact>:sample-metadata

<xml-metadata-content/>

A descrição desta operação é:

Anexe os metadados XML a um item (arquivo ou pasta).

É isso que estou procurando? Por exemplo, se eu tiver um jar chamado my-utils-2.3.jar, então quero poder colocar isso no deploy/ diretório, e fazer com que meu script não apenas gere my-utils-2.3-ivy.xml, mas para implantar esses dois itens em meu repositório no local certo (que, neste exemplo, seria http://localhost:8080/artifactory/my-repo/my/utils/2.3/).

Se não é isso que estou procurando, então a API do Artifactory suporta o que eu quero (e onde está a documentação sobre isso!)?

E, se é isso que procuro, tenho uma segunda pergunta relacionada à segurança.Eu gostaria de manter todos os meus repositórios protegidos.Idealmente, o usuário que executa este script Python teria que fornecer o Artifactory admin nome de usuário e senha para que a implantação seja realizada com sucesso.

Mas em nenhum lugar da definição desta operação vejo suporte para autenticação!!Devo presumir que o Artifactory não autentica chamadas REST?!?

Desde já, obrigado!

Editar:
Encontrei o seguinte exemplo no antigo fórum do Artifactory/Users:

curl -X PUT -u user:password --data-binary @/absolute/path/my-utils-2.3.jar "http://localhost/artifactory/my-repo/my/utils/2.3/"

Seria isso que estou procurando? Dessa forma, eu poderia usar o PyCurl para a interface curl/libcurl e ainda obter segurança.Se sim, então por que estou sendo solicitado a autenticação por curl, em vez de Artifactory?

Foi útil?

Solução

Artifactory usa autenticação HTTP BASIC para todas as chamadas REST.O exemplo curl que você mencionou não funcionará, pois você precisa especificar o caminho de destino completo para o arquivo (o comando atual irá apenas (re)criar o diretório no Artifactory e ignorar o fluxo de arquivos).Você deveria usar:

curl -XPUT -f -uadmin:password --data-binary @/absolute/path/my-utils-2.3.jar "http://localhost/artifactory/my-repo/my/utils/2.3/my-utils-2.3.jar"

No entanto, você pode usar o Ivy para resolver diretamente de repositórios Maven de terceiros por meio do Resolvedor IBiblio (consulte "usepoms") ou converta automaticamente poms em descritores ivy usando o converterpom tarefa.

O Artifactory também permite que você aplique esse tipo de conversão pom->ivy internamente e armazene o arquivo ivy em seu cache por meio de um arquivo baseado em groovy. plug-in de usuário que intercepta o evento 'afterRemoteDownload'.

Outras dicas

Embora o Artifactory seja flexível o suficiente para suportar repositórios ivy, eu recomendaria executá-lo como um repositório Maven.

Por que?

  1. Maven se estabeleceu como o Java de fato repositório padrão.
  2. Outras ferramentas de construção, Ivy, Gradle, sbt, etc., todas entendem os repositórios Maven.

A resposta a seguir descreve como o ivy pode ser implantado em um repositório Maven:

Converter ivy.xml em pom.xml

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top