将自定义 jar 上传到 cx-server nexus
Uploading custom jar to cx-server nexus
因此,我正在尝试使用 s4sdk 设置 CI/CD 管道。我成功完成了 this 博客中描述的所有步骤。一切似乎 运行ning 都很顺利,但是我的 build 失败并显示以下错误消息:
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://:8081 下可以访问一个 Web ui,但不知何故没有响应。
我可以通过 docker ps
确认 jenkins 和 nexus 容器都在 运行ning 并且 nexus 容器正在侦听 TCP 8081。我也能够到达 jenkin 的前端进行配置和 运行 我的管道。
我错过了什么?将丢失的工件上传到 nexus 是正确的方法吗?感谢任何帮助。
您看到的 nexus 容器用作下载缓存,并且设计为无法从外部访问以防止对其进行意外更改。此外,它的生命周期由 cx-server
脚本控制,因此即使您在那里手动安装软件包,一旦您升级 Jenkins,它们就会消失。
我认为处理此问题的最佳方法是设置另一个 Nexus 实例,在其中安装所需的包并配置管道以使用 here (mvn_repository_url
). This nexus needs to be configured as a mirror for Maven central. We don't have specific docs on how to do that, but this post 描述的类似设置。
在此设置中,您可能希望禁用下载缓存,因为它是多余的(cache_enabled
到 false
)。
希望对您有所帮助。
亲切的问候
弗洛里安
sidecar nexus 充当主机(和代理)上的 maven 和 npm 工件的只读缓存,其中 cx 服务器是 运行。默认情况下,它会从 Maven Central 和默认的 npm 注册表中查找工件。在当前的实现中,缓存将在停止 cx 服务器后被完全删除,导致所有内部状态丢失。
如果您想使用自定义来源,您可以通过 mvn_repository_url
和 npm_registry_url
在 server.cfg
中设置它们。这记录在操作指南中,您可以在此处找到:https://github.com/SAP/cloud-s4-sdk-pipeline/blob/master/doc/operations/operations-guide.md
在您的情况下,您必须指定一个包含相关依赖项的 Maven 存储库。
因此,我正在尝试使用 s4sdk 设置 CI/CD 管道。我成功完成了 this 博客中描述的所有步骤。一切似乎 运行ning 都很顺利,但是我的 build 失败并显示以下错误消息:
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://
我可以通过 docker ps
确认 jenkins 和 nexus 容器都在 运行ning 并且 nexus 容器正在侦听 TCP 8081。我也能够到达 jenkin 的前端进行配置和 运行 我的管道。
我错过了什么?将丢失的工件上传到 nexus 是正确的方法吗?感谢任何帮助。
您看到的 nexus 容器用作下载缓存,并且设计为无法从外部访问以防止对其进行意外更改。此外,它的生命周期由 cx-server
脚本控制,因此即使您在那里手动安装软件包,一旦您升级 Jenkins,它们就会消失。
我认为处理此问题的最佳方法是设置另一个 Nexus 实例,在其中安装所需的包并配置管道以使用 here (mvn_repository_url
). This nexus needs to be configured as a mirror for Maven central. We don't have specific docs on how to do that, but this post 描述的类似设置。
在此设置中,您可能希望禁用下载缓存,因为它是多余的(cache_enabled
到 false
)。
希望对您有所帮助。
亲切的问候
弗洛里安
sidecar nexus 充当主机(和代理)上的 maven 和 npm 工件的只读缓存,其中 cx 服务器是 运行。默认情况下,它会从 Maven Central 和默认的 npm 注册表中查找工件。在当前的实现中,缓存将在停止 cx 服务器后被完全删除,导致所有内部状态丢失。
如果您想使用自定义来源,您可以通过 mvn_repository_url
和 npm_registry_url
在 server.cfg
中设置它们。这记录在操作指南中,您可以在此处找到:https://github.com/SAP/cloud-s4-sdk-pipeline/blob/master/doc/operations/operations-guide.md
在您的情况下,您必须指定一个包含相关依赖项的 Maven 存储库。