-
背景maven deploy的过程中Archiva一直响应没有权限,于是想起来Archiva系统有个比较怪的点——默认是需要定期修改密码的。一旦之前设置的密码过期,就必须通过“忘记密码”流程修改,而这个流程需要发送邮件,不过可能这个邮件发送有什么问题,一直收不到。于是乎就必须走重新创建用户的流程,即删除Archiva的用户信息目录后重启。我的用户目录在/usr/local/data/databases/users。查阅资料后,发现可以在Archiva的WebUI中User Runtime Configuration-Properties第三页-security.policy.password.expiration.enabled选项设置为false关闭密码过期策略。
惨痛的掉坑过程原以为关闭过期策略就万事大吉,没想到后续的这一系列操作直接把CI/CD流程整瘫痪了:
删除用户目录并重启,在WebUI关闭了密码过期策略部署博客服务后服务启动失败,仅瞟了一眼日志就误以为内存不够用了ps.这里特别说明一下,服务器内存比较小(穷),在扩容内存之前是经常不够用的,于是惯性思维,认为确实内存不够用了。而后来定位到真正的原因是服务器maven package过程中jar未更新。把Archiva所使用的Tomcat关闭,释放内存资源服务仍然启动失败,发现原来是jar有问题,于是尝试修复jar中的问题(当然,实际上是jar未更新)需要部署jar,因此又启动Archiva,这时Archiva启动不了,报错
至此,整个状态是:博客服务由于依赖问题无法启动;Archiva服务无法启动;Jenkins正常但由于Archiva瘫痪无法打包发布。
Archiva报错内容核心错误日志:
... # 服务无法启动
......
-
集成Maven部署服务端增加Archiva用户在Archiva的webUI的Manage选项增加用户,该用户需要有Repository Manager权限客户端修改Maven配置文件settings.xml仅列出了文件的部分内容
<servers>
<server>
<id>archiva.internal</id>
<username>前一步设置的用户名</username>
<password>前一步设置的密码</password>
......
-
部署Archiva官网说得很详细,这里简述一下2.2.3版本的安装过程,更多内容参考官方说明文档。https://archiva.apache.org/docs/2.2.3/quick-start.html
#下载
wget http://apache.claz.org/archiva/2.2.3/binaries/apache-archiva-2.2.3-bin.zip
#解压
unzip apache-archiva-2.2.3-bin.zip
#增加软链
......
-
Archiva
Archiva是什么Archiva是由Apache提供的Maven私人服务器,用于为Maven构建工程时提供仓库服务。
Archiva的同类产品比较出名的是Sonatype Nexus,GitHub有人给出了几大类Maven服务器的主要差别。https://binary-repositories-comparison.github.io/在用户角度来看,其实差不了太多,不过我对Apache天生有好感,Archiva配置也是非常简单。而且很多公司已经在使用Nexus了,Archiva文档较少,那么就来试试水。
为什么使用Archiva应该说为什么使用Maven私服。主要原因是这几点:
生产环境大多数工程依赖的jar包是一样的,甚至版本基本也一样,私服可以很好地起到缓存作用,减少带宽消耗,加速依赖下载过程生产环境可能是内网环境,发布系统Maven打包时无法连接Maven中央仓库可以控制仓库中的jar包版本,从而控制代码依赖的版本可以上传自己的工具jar包,利于解耦和代码复用
Archiva官网https://archiva.apache.org/index.cgi
......