Загрузка пользовательского jar на нексус cx-сервера - PullRequest
3 голосов
/ 24 апреля 2019

Итак, я пытаюсь настроить конвейер CI / CD с помощью s4sdk. Я успешно выполнил все шаги, описанные в этом блоге. Кажется, все работает без сбоев, однако моя сборка завершается с ошибкой:

The following artifacts could not be resolved: com.sap.xs2.security:security-commons:jar:0.28.6, com.sap.xs2.security:java-container-security:jar:0.28.6, com.sap.xs2.security:java-container-security-api:jar:0.28.6, com.sap.security.nw.sso.linuxx86_64.opt:sapjwt.linuxx86_64:jar:1.1.19: Could not find artifact com.sap.xs2.security:security-commons:jar:0.28.6 in s4sdk-mirror (http://s4sdk-nexus:8081/repository/mvn-proxy/)

Теперь эти сообщения об ошибках имеют смысл для меня, поскольку я помню, как загружал эти артефакты из центра загрузки SAP, и поэтому эти артефакты недоступны в maven central.

Я думаю, что эту ошибку можно устранить, вручную загрузив эти артефакты на сервер Nexus, но я не знаю как. Согласно документации nexus, есть веб-интерфейс, доступный по адресу http://< cx-server-ip>: 8081, но он почему-то не отвечает.

Я могу подтвердить с помощью docker ps, что оба контейнера jenkins и nexus работают и что контейнер nexus прослушивает TCP 8081. Я также могу получить доступ к интерфейсу jenkin для настройки и запуска моего конвейера.

Чего мне не хватает? Является ли загрузка недостающих артефактов в нексус правильным подходом? Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Связка колясок действует в качестве кэша только для чтения для артефактов maven и npm на хосте (и агентах), где работает сервер cx.По умолчанию он ищет артефакты из maven central и реестра npm по умолчанию.В текущей реализации кэш будет полностью удален после остановки cx-сервера, что приведет к потере всего внутреннего состояния.

Если вы хотите использовать пользовательские источники, вы можете установить их в server.cfg через mvn_repository_url и npm_registry_url.Это задокументировано в руководстве по эксплуатации, которое вы можете найти здесь: https://github.com/SAP/cloud-s4-sdk-pipeline/blob/master/doc/operations/operations-guide.md

В вашем случае вы должны указать репозиторий maven, который включает в себя рассматриваемые зависимости.

1 голос
/ 24 апреля 2019

Контейнер nexus, который вы видите, действует как кеш загрузки и по своей конструкции недоступен извне, чтобы предотвратить случайные изменения в нем. Кроме того, его жизненный цикл контролируется сценарием cx-server, поэтому даже если вы установили туда пакеты вручную, они пропадут после обновления Jenkins.

Я думаю, что лучший способ справиться с этим - настроить еще один экземпляр Nexus, в котором вы устанавливаете необходимые пакеты и настраиваете конвейер для его использования, как описано здесь (mvn_repository_url). Этот нексус должен быть настроен как зеркало для Maven central. У нас нет конкретных документов о том, как это сделать, но этот пост описывает аналогичную настройку.

В этой настройке может потребоваться отключить кэш загрузки, так как он избыточен (cache_enabled до false).

Надеюсь, это поможет.

С уважением

Florian

...