所以,我正在尝试使用s4sdk设置CI / CD管道。我成功完成了this博客中描述的所有步骤。一切似乎都运行顺利,但我的构建失败,出现以下错误消息:
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下可以访问一个web ui,但它在某种程度上没有响应。
我可以用docker ps
确认jenkins和nexus容器都在运行,并且nexus容器正在侦听TCP 8081.我也能够到达jenkin的前端来配置和运行我的管道。
我错过了什么?是否正确的方法将缺失的工件上传到nexus?任何帮助表示赞赏。
您看到的nexus容器充当下载缓存,并且设计无法从外部访问以防止意外更改。此外,它的生命周期由cx-server
脚本控制,所以即使您手动安装了包,一旦升级Jenkins它们就会消失。
我认为处理这个问题的最佳方法是设置另一个Nexus实例,您可以在其中安装所需的软件包并配置管道以使用here(mvn_repository_url
)所述。这个nexus需要配置为Maven central的镜像。我们没有关于如何做到这一点的具体文档,但this post描述了类似的设置。
在此设置中,您可能希望禁用下载缓存,因为它是冗余的(cache_enabled
到false
)。
我希望这有帮助。
亲切的问候
弗洛里安
sidecar nexus作为运行cx服务器的主机(和代理)上的maven和npm工件的只读缓存。默认情况下,它会从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存储库,其中包含相关的依赖项。