持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而今早地发现地发现集成的错误。
(1)节省人力成本;
(2)加快软件开发速度;
(3)实时交付。
成员通过git提交代码到gitlab——>持续集成引擎拉取代码,使用构建工具自动构建——>发布构造后之后的中药组成部分
git
gitlab
jenkins 持续集成引擎
maven 构建工具
sonarqube 代码质量管理
Junit 执行单元测试
JDK java的开发工具
Tomcat 服务器
因此,持续集成实际上是一套体系。
为啥会用到jenkins?
原本就是几个war包发布到服务器就可以了——>微服务架构,如果单纯通过手工发布,是很危险的!因此需要用到jenkins
像jdk及tomcat,一般安装到/usr/local这个目录下。
因为jdk在服务器上已经安装了,过程大概是:
解压tar.gz到/ust/local
之后,vim /etc/profile
配置上JAVA_HOME、JRE_HOME、CLASSPATH,并将java的bin目录放置到path中。
记得source /ect/profile
souce 很像 ./ 实际上就是指在当前bash环境下读取并执行FileName中的命令。
下载一个最新版本的maven:apache-maven-3.6.0-bin.tar.gz
用 tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /usr/local
顺便来复习下tar命令:
z表示解压gz,x解压tar,v显示处理文件,f后接文件,C接解压目录。
复制maven的路径:
/usr/local/apache-maven-3.6.0
在/etc/profile中加入这一句:
export PATH= M A V E N H O M E : MAVEN_HOME: MAVENHOME:PATH
输入:
mvn --help
有提示命令就安装完成了。
下载地址:
https://www.sonatype.com/download-oss-sonatype
然后选择unix版的仓库。
下载好了就有这个文件了:
nexus-3.14.0-04-unix.tar.gz
之后进行上传、解压
和之前的tar操作一样
之后如果要修改端口号:
在/usr/local/etc,
vim /usr/local/nexus-3.14.0-04/etc/nexus-default.properties
在这里有一段:
这个port就是端口号,是可以修改的,服务器是没有用到8081的,所以可以使用这个。
当然,要用这个端口,老规矩,要把防火墙给开了:
vim /etc/sysconfig/iptables
加入一行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
之后重启防火墙
service iptables restart
总之企业的版本是偏老的,用service总之是可以用的
启动这个服务:
./nexus start
有个提示:
Detected execution as “root” user. This is NOT recommended!
就是说不建议用root执行咯,我们kill掉这个进程:
查找进程
ps aux | grep nexus
找到那个进程,杀掉:
kill 11063
之后用普通账户启动就好了。
用普通用户启动:
./nexus start
但是进程里却查不到:
ps aux | grep nexut
这时候我们用:
./nexus run
就可以看到提示信息:
Unable to delete file: /usr/local/sonatype-work/nexus3/cache/bundle129/bundle.info
Unable to update instance pid: /usr/local/sonatype-work/nexus3/instances/instance.properties (权限不够)
ok,我们根据查找到的目录知道要更改两个目录的权限:
chown -R XXX:XXX nexus-3.14.0-04/ sonatype-work/
浏览器打开并登陆(ip写这个服务器的)
http://192.168.56.102:8081/
账号admin
密码 admin123
System Requirement: max file descriptors [4096] likely too low, increase to at least [65536].
修改ulimit
vim /etc/security/limits.conf
新增
* soft nofile 65535
* hard nofile 65535
之后设置自动启动:
su - nexus -c ‘/usr/local/nexus-3.12.1-01/bin/nexus start’
我们关注的主要就是maven的这些部分,这个proxy是代理仓库的意思。我们来看一下maven调用的过程。首先它会在本地找maven仓库,然后如果在本地找不到仓库,则会去远程仓库找。这个proxy相当于代理去远程找仓库。group则相当于把其他仓库分成一个组的概念
如果要新建仓库,在如下界面操作:
新建一个maven-hosted仓库:
如何配置呢,首先找到maven下的conf目录里的setting.xml:
在server这里:
加上这一段,当然这是测试,实际环境当然不能给别人admin权限
然后再配以一个snapshots
之后我们要在profile中配置私有库的地址,即这个仓库的地址:
同样,插件库的地址也是指向这个maven-public。
xml的设置最终是这个样子(当然为什么这么配,也是参考的,以后再来解析解析maven的配置文件):
xdclass-releases
admin
admin123
xdclass-snapshots
admin
admin123
xdclass
false
xdclass
http://192.168.56.101:8081/repository/maven-public/
true
true
xdclass
http://192.168.56.101:8081/repository/maven-public/
true
true
xdclass
这个地址改成阿里云的地址:
http://maven.aliyun.com/nexus/content/groups/public/
不过在内网这个设置也没什么用,还是要靠自己push上去
maven项目中则要修改pom设置:
xdclass-releases
Ruizhi Release Repository
http://192.168.56.101:8081/repository/maven-releases/
xdclass-snapshots
Ruizhi Snapshot Repository
http://192.168.56.101:8081/repository/maven-snapshots/
ok,讲完怎么用nexus,我们也要提供一些原材料不是。尤其是内网,不上传jar,它从哪里来提供依赖?
点这里就好,然后上传jar包:
然后呢,就能在仓库中看到这个jar包了: