Eu tenho um projeto não Java que produz um artefato de compilação com versão e quero carregá-lo em um repositório Nexus. Como o projeto não é Java, ele não usa Maven para compilações. E prefiro não introduzir arquivos Maven / POM apenas para colocá-los no Nexus.
Os links em blogs para a API REST do Nexus terminam em uma parede de login, sem nenhum link "criar usuário" que eu possa ver.
Então, qual é a melhor (ou qualquer maneira razoável) de fazer upload de artefatos de construção para um repositório Nexus sem Maven? "bash + curl" seria ótimo, ou até mesmo um script Python.
Respostas:
Você está pensando em usar a linha de comando Maven para fazer upload de arquivos?
Isso irá gerar automaticamente o Maven POM para o artefato.
Atualizar
O artigo Sonatype a seguir afirma que o plug-in maven "deploy-file" é a solução mais fácil, mas também fornece alguns exemplos usando curl:
https://support.sonatype.com/entries/22189106-How-can-I-programatically-upload-an-artifact-into-Nexus-
fonte
Usando curl:
Você pode ver o que os parâmetros significam aqui: https://support.sonatype.com/entries/22189106-How-can-I-programatically-upload-an-artifact-into-Nexus-
Para fazer as permissões para este trabalho, eu criei uma nova função na GUI do administrador e adicionei dois privilégios a essa função: Download de artefato e Upload de artefato. A função padrão "Repo: Todos os Repositórios Maven (Controle Total)" não é suficiente. Você não encontrará isso na documentação da API REST que vem com o servidor Nexus, portanto, esses parâmetros podem mudar no futuro.
Em um problema do Sonatype JIRA , foi mencionado que eles "irão revisar a API REST (e a forma como sua documentação é gerada) em um próximo lançamento, provavelmente ainda este ano".
fonte
Não há necessidade de usar esses comandos .. você pode usar diretamente a interface web do nexus para fazer o upload do seu JAR usando os parâmetros GAV.
Portanto, é muito simples.
fonte
Artifact Upload
. Infelizmente, não consegui encontrar nada nos documentos que mencionasse isso ... (Edit: Entendo, Ed já indiquei isso )Você pode fazer isso ABSOLUTAMENTE sem usar nada relacionado ao MAVEN. Eu pessoalmente uso o NING HttpClient (v1.8.16, para suportar java6).
Por alguma razão, Sonatype torna incrivelmente difícil descobrir quais URLs, cabeçalhos e cargas úteis devem ser corretos; e eu tive que farejar o tráfego e adivinhar ... Existem alguns blogs / documentação pouco úteis lá, no entanto, ou é irrelevante
oss.sonatype.org
, ou é baseado em XML (e descobri que nem mesmo funciona). Documentação de merda da parte deles, IMHO, e esperançosamente futuros pesquisadores podem achar esta resposta útil. Muito obrigado a https://stackoverflow.com/a/33414423/2101812 por sua postagem, pois ajudou muito.Se você liberar em algum lugar diferente
oss.sonatype.org
, apenas substitua por qualquer que seja o host correto.Aqui está o código (licença CC0) que escrevi para fazer isso. Onde
profile
está seu sonatype / nexus profileID (como4364f3bbaf163
) erepo
(comocomdorkbox-1003
) são analisados a partir da resposta quando você carrega seu POM / Jar inicial.Fechar repo:
Promova repo:
Abandone o repo:
Excluir turds de assinatura:
Uploads de arquivos:
EDIT1:
Como obter a atividade / status de um repo
fonte
As chamadas que você precisa fazer para o Nexus são chamadas de API REST.
O maven-nexus-plugin é um plugin Maven que você pode usar para fazer essas chamadas. Você pode criar um pom fictício com as propriedades necessárias e fazer essas chamadas por meio do plug-in Maven.
Algo como:
Coisas presumidas:
Em última análise, tudo o que isso está fazendo é criar chamadas REST no Nexus. Há uma API Nexus REST completa, mas não tive sorte em encontrar documentação para ela que não estivesse atrás de um acesso pago. Você pode ativar o modo de depuração para o plug-in acima e descobri-lo usando
-Dnexus.verboseDebug=true -X
.Você também poderia, teoricamente, ir para a IU, ativar o painel Firebug Net e observar os POSTs de / serviço e deduzir um caminho lá também.
fonte
para quem precisa em Java, usando apache httpcomponents 4.0:
fonte
Em ruby https://github.com/RiotGames/nexus_cli Um wrapper CLI em torno de chamadas REST Sonatype Nexus.
Exemplo de uso:
A configuração é feita por meio do
.nexus_cli
arquivo.fonte
Você também pode usar o método de implantação direta usando curl. Você não precisa de um pom para o seu arquivo, mas ele não será gerado também, então se você quiser um, terá que carregá-lo separadamente.
Aqui está o comando:
fonte
Se você precisar de uma interface de linha de comando conveniente ou API python, consulte as ferramentas de repositório
Usando-o, você pode fazer o upload do artefato para o Nexus com o comando
Para fazer funcionar, você também precisará definir algumas variáveis de ambiente
fonte
Você pode carregar manualmente os artefatos clicando no botão de upload de artefatos no servidor Nexus e fornecer as propriedades GAV necessárias para o upload (geralmente é a estrutura de arquivo para armazenar o artefato)
fonte
Para versões recentes do Nexus OSS (> = 3.9.0)
https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programmatically-upload-files-into-Nexus-3-
Exemplo para as versões 3.9.0 a 3.13.0:
fonte
@Adam Vandenberg Para código Java para POST no Nexus. https://github.com/manbalagan/nexusuploader
fonte
Você pode usar o curl.
fonte