JBoss Repository Manager的案例研究
JBoss开发人员在使用新的构建基础设施时遇到的大多数问题都是公开讨论的在这里。这是关于Hudson、Maven和sontype - nexus集成遇到的问题的重要信息来源。
- modv或http(s)部署URL
- 在pom.xml中管理distributionManagement XML标记
- 使用密码进行Maven部署
- 超时和性能问题
- Maven元数据XML问题
- Maven部署失败
- 创建和验证校验和
- 主要有3种种类使用的马车与Maven:轻量级http(目前的默认值),重量级http(旧Maven版本的默认值),Dav。
- Dav在部署时使用事务,它在客户端有更好的内存管理,并且具有计算校验和的Bug。Dav是部署大文件时必须使用。现在,问题是dav是您可能会因为事务而超时,所以建议是正确的!
- Maven中包含轻量级http,将整个字节数组缓存到内存中,因此无法用于大型部署。
- Dav重量级协议的默认配置使每个部署的文件在网络上传输两次。这是由于标准HTTP协议总是尝试在没有身份验证的情况下发送请求,然后再发送请求。检查这找到配置的方法preeemptive在Maven简单http客户端中进行http身份验证。
- Maven正在缓存凭证资料来源:URL。这意味着,如果对读查询进行身份验证,则使用相同的读凭据为部署!参见“配置身份验证”在这里。
基本上,看看上面的选项,标准Maven没有什么令人满意的。
- Artifactory为每个用户生成一个非对称密钥对,
- 在UI中输入你的明文密码,你会得到一个带有你个人加密密码的settings.xml块。
- 上面加密的密码可以在任何地方使用(不仅仅是maven),并且只允许REST API访问(maven部署等),不允许UI访问。
- 有了加密的密码,https来做maven部署不再是必须的了=>服务器上的负载少了很多。
- 与JBoss Hudson服务器上使用的所有密码的完全明文解密相比,窃取加密密码或私钥(保存在Artifactory DB中)对安全性的影响最小。
- 您可以强制在REST和maven部署时始终使用加密密码。
这个问题涉及到dav模式、JVM内存参数、操作系统打开文件句柄调优,还涉及到下一个关于maven-metadata.xml文件的问题。
根据我们的经验,最新的1.6 Sun JVM的一个问题是对年轻内存大小的错误计算。因此,在更新/升级服务器时,您应该验证-XX:NewSize和-XX:MaxNewSize至少设置为总堆大小的2/3。Artifactory(像Nexus一样)每个请求都需要大量的内存空间(管理文件),因此JVM的年轻伊甸园空间是最重要的参数。只是要小心设置一个兆字节的好倍数,因为JVM在将内存块从年轻的根空间移动到旧的根空间时存在错误。
这个问题解释起来有点棘手,我希望我能说清楚
- org/richfaces/用户界面/ modal-panel 3.3.4-SNAPSHOT / maven元数据。xml要更新此版本的时间戳和/或最新唯一版本号,
- org/richfaces/用户界面/ modal-panel maven元数据。xml更新可用快照版本列表和最新创建的快照版本。
问题是maven客户端正在完成这项复杂的工作,并结合了maven元数据。XML文件被maven反复请求以构建其版本解析方案。
像每个人一样,大多数JBoss项目在Hudson中都有上游和下游依赖项。例如:richfaces-jsf2取决于richfaces。所以,多个单独的SNAPSHOT是很常见的哈德逊工作(比如说)richfaces3.3.4-snapshot和richfaces-3.3.5-SNAPSHOT)将并行执行。从上面的maven设计中可以看到,maven元数据的计算。XML文件几乎肯定会失败。
为了解决这个问题,我们的部署系统(在哈德逊插件)知道Artifactory是一个智能存储库管理器,因此只发送砰的一声, jar和已验证的校验和发送给存储库管理器。Artifactory然后排队Maven元数据异步重新计算任务,从而避免并行冲突和超时。实现这一机制是远不明显,但我们今天有了积分测试部署5个不同的快照版本并发(并且重复),没有任何问题
7)创建和验证校验和
- 玩dav可能产生了很多你不知道的错误校验和;
- 没有错误校验和验证部署因此,构建也将如此成功,但是用户将得到一个错误的校验和错误;
- 自相关的之间的哈德逊maven的校验和不能信任你会失去可追溯性在哈德逊和Nexus之间
说明:Artifactory能够失败部署,如果校验和不匹配,有许多校验和政策配置。
为了JBoss开发者和用户的利益,我希望Red Hat能够解决他们的构建基础设施问题