Загрузка кастомного jar-файла на cx-server nexus

Итак, я пытаюсь настроить конвейер 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, существует веб-интерфейс, доступный по адресу http: // ‹cx-server-ip>: 8081, но он почему-то не отвечает.

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

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


person floste    schedule 24.04.2019    source источник


Ответы (2)


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

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

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

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

С уважением

Флориан

person Florian Wilhelm    schedule 24.04.2019
comment
Привет, Флориан, спасибо за ответ. Я запустил второй экземпляр nexus, как описано в вашем связанном сообщении в блоге, и установил все необходимые пакеты. После этого я остановил cx-server, удалил контейнер, внес необходимые изменения в server.cfg (mvn_repository_url и cache_enabled на false) и перезапустил cx-server. Однако моя сборка все еще не работает с тем же сообщением об ошибке. Предоставленная ссылка на репозиторий maven, похоже, не имеет никакого эффекта. Даже если я установлю URL-адрес в случайную строку, Дженкинс все равно будет извлекать из центра maven. Я что-то еще упускаю? - person floste; 25.04.2019
comment
Плохо, что документация для mvn_repository_url вводит в заблуждение, она применима только к тому, откуда кеш загрузки получает свои пакеты, поэтому в данном случае это неправильная настройка. Вместо этого вам нужно настроить settings.xml файл для maven, в котором вы настраиваете свой экземпляр nexus и устанавливаете его как файл настроек проекта, cf github.com/SAP/cloud-s4-sdk-pipeline/blob/master/ - person Florian Wilhelm; 25.04.2019

Связка sidecar действует как доступный только для чтения кеш для артефактов maven и npm на хосте (и агентах), на котором работает cx server. По умолчанию он ищет артефакты в 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, который включает в себя рассматриваемые зависимости.

person Benjamin    schedule 24.04.2019