Как загрузить файл в менеджер репозитория Nexus с помощью curl? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь загрузить файл в хранилище моментальных снимков на сервере Nexus 2.14.11-01 с помощью следующей команды:

curl -v -u username:password --upload-file file.ext \
    https://example.com/nexus/content/repositories/snapshots/ \
    com.example.snapshot/com/example/myscripts/1.2.3/file-1.2.3-SNAPSHOT.ext

, который должен работать согласно этой странице поддержки . В моем случае это не удается со следующим выводом:

*   Trying xxx.xxx.xxx.xxx...
* Connected to example.com (xxx.xxx.xxx.xxx) port 443 (#0)
* found 148 certificates in /etc/ssl/certs/ca-certificates.crt
* found 597 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
*    server certificate verification OK
*    server certificate status verification SKIPPED
*    common name: *.example.com (matched)
*    server certificate expiration date OK
*    server certificate activation date OK
*    certificate public key: RSA
*    certificate version: #3
*    subject: -
*    start date: Thu, 02 Nov 2017 00:00:00 GMT
*    expire date: Thu, 13 Feb 2020 12:00:00 GMT
*    issuer: C=US,O=DigiCert Inc,CN=DigiCert SHA2 Secure Server CA
*    compression: NULL
* ALPN, server accepted to use http/1.1
* Server auth using Basic with user 'username'
> PUT /nexus/content/repositories/snapshots/com.example.snapshot/com/example/myscripts/1.2.3/file-1.2.3-SNAPSHOT.ext HTTP/1.1
> Host: example.com
> Authorization: Basic dHyZXcabzpAbmVlMjVa
> User-Agent: curl/7.47.0
> Accept: */*
> Content-Length: 7837
> Expect: 100-continue
> 
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 403 Forbidden
< Date: Wed, 09 Jan 2019 09:06:14 GMT
< Server: Nexus/2.14.11-01
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Content-Length: 0
< Access-Control-Allow-Origin: *
< 
* Connection #0 to host example.com left intact

1 Ответ

0 голосов
/ 09 января 2019

Во-первых, вы получаете 403 (запрещено), что означает, что ваши учетные данные были приняты, но пользователь, выполняющий загрузку, не имеет прав для загрузки в хранилище.

Во-вторых, файл находится не в правильном макете репозитория Maven. Это должно быть в этой форме:

/ $ groupIdWithSlashes / $ артефакт / $ версия / $ artifactId- $ версии. $ Расширение
/$groupIdWithSlashes/$artifactId/$version/$artifactId-$version-$classifier.$extension

https://example.com/nexus/content/repositories/snapshots/ \
    com.example.snapshot/com/example/myscripts/file/ \
    1.2.3-SNAPSHOT/file-1.2.3-SNAPSHOT.ext

В-третьих, вы действительно должны использовать maven для загрузки, так что будет создан файл pom. Артефакты в репозиториях Maven всегда должны иметь связанные файлы POM. Использование цели maven «deploy: deploy-file» сгенерирует pom:

https://support.sonatype.com/hc/en-us/articles/213465818-How-can-I-programmatically-upload-an-artifact-into-Nexus-2-#maven-deploy-file

...