3

因此,我正在尝试使用 s4sdk 设置 CI/CD 管道。我成功完成了博客中描述的所有步骤。一切似乎都运行顺利,但是我的构建失败并显示以下错误消息:

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 psjenkins 和 nexus 容器都在运行,并且 nexus 容器正在侦听 TCP 8081。我还可以访问 jenkin 的前端来配置和运行我的管道。

我错过了什么?将丢失的工件上传到连接是正确的方法吗?任何帮助表示赞赏。

4

2 回答 2

2

sidecar nexus 充当运行 cx 服务器的主机(和代理)上的 maven 和 npm 工件的只读缓存。默认情况下,它会从 maven Central 和默认的 npm 注册表中查找工件。在当前的实现中,cx server 停止后缓存将被完全删除,导致所有内部状态丢失。

如果要使用自定义源,可以在server.cfgviamvn_repository_url和中设置npm_registry_url。这记录在操作指南中,您可以在此处找到:https ://github.com/SAP/cloud-s4-sdk-pipeline/blob/master/doc/operations/operations-guide.md

在您的情况下,您必须指定一个包含相关依赖项的 Maven 存储库。

于 2019-04-24T13:51:14.290 回答
2

您看到的 nexus 容器充当下载缓存,并且设计为无法从外部访问以防止对其进行意外更改。此外,它的生命周期由cx-server脚本控制,因此即使您手动安装了软件包,一旦升级 Jenkins,它们也会消失。

我认为处理此问题的最佳方法是设置另一个 Nexus 实例,您可以在其中安装所需的包并配置管道以使用此处描述的( mvn_repository_url)。这个关系需要配置为 Maven 中心的镜像。我们没有关于如何做到这一点的具体文档,但这篇文章描述了一个类似的设置。

在此设置中,您可能希望禁用下载缓存,因为它是多余的 ( cache_enabledto false)。

我希望这有帮助。

亲切的问候

弗洛里安

于 2019-04-24T13:47:32.183 回答