概述
Jenkins是一个用Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从Hudson项目复刻。
Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。Jenkins的主要开发者是川口耕介。Jenkins是在MIT许可证下发布的自由软件。
可以通过各种手段触发构建。例如提交给版本控制系统时被触发,也可以通过类似Cron的机制调度,也可以在其他的构建已经完成时,还可以通过一个特定的URL进行请求。
官方网站:https://jenkins.io。
准备
JDK环境
Jenkins是由Java开发的war包,故需要配置JDK环境,具体需求:
主机:
- 最小256M内存,建议512M以上
- 至少10G的磁盘空间
软件环境:
- Java 8 (JRE和JDK均可)
- Tomcat (可选)
目前公共版JDK8已停止更新,最新版本为8u162。
wget http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz tar zxf jdk-8u162-linux-x64.tar.gz -C /usr/local/ echo 'export JAVA_HOME=/usr/local/jdk1.8.0_162' > /etc/profile.d/java.sh echo 'export JRE_HOME=$JAVA_HOME/jre' >> /etc/profile.d/java.sh echo 'export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' >> /etc/profile.d/java.sh source /etc/profile.d/java.sh java -version
Maven
Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
安装Maven:
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz tar zxf apache-maven-3.5.3-bin.tar.gz -C /usr/local/ mv /usr/local/apache-maven-3.5.3 /usr/local/maven-3.5.3 echo 'export MAVEN_HOME=/usr/local/maven-3.5.3' > /etc/profile.d/mvn.sh echo 'export PATH=$PATH:$MAVEN_HOME/bin' >> /etc/profile.d/mvn.sh source /etc/profile.d/mvn.sh mvn -v
Tips:配置Maven使用Nexus作为仓库源。
默认情况下,Maven依赖于公网上的中央仓库,这是为了能让Maven立即使用,但仅仅这么做明显是错误的,这会造成大量的时间及带宽的浪费。
我们可以将Repository配置到POM中,但一般来说这不是很好的做法,原因很简单,你需要为所有的Maven项目重复该配置。因此,默认是将Repository的配置放在$user_home/.m2/settings.xml中。
之所以放放以上文件是因为,mvn默认配置文件设定了mvn本地的仓库目录,存放于用户宿主目录下的.m2目录中:
vim /usr/local/maven-3.5.3/conf/settings.xml
Nexus Repository Manager
Nexus Repository Manager作为支持Maven存储库格式的存储库管理器启动,并且继续为Apache Maven,Apache Ant / Ivy,Eclipse Aether,Gradle等用户提供卓越的支持。
我们通常称其为Maven私服。主要作用:
- 减少从远方仓库下载的次数,节省带宽、提高maven build的效率
- 减少对远方仓库的依赖,确保maven build的稳定性
- 方便内部人员发布artifact
- 方便存放官方仓库中没有的第三方依赖包
下图可以更直观反映情况:
MVN官网:https://www.sonatype.com
通过以下链接下载到3.x版本的最新版:
wget http://download.sonatype.com/nexus/3/latest-unix.tar.gz
安装:
tar zxf nexus-3.10.0-04-unix.tar.gz -C /usr/local/ mv /usr/local/nexus-3.10.0-04/ /usr/local/nexus3
其bin目录下的nexus启动文件同时也是INIT服务脚本,可以拿来使用:
vim /usr/local/nexus3/bin/nexus
... INSTALL4J_JAVA_HOME_OVERRIDE="/usr/local/jdk1.8.0_162" ...
ln -s /usr/local/nexus3/bin/nexus /etc/init.d/nexus chkconfig --add /etc/init.d/nexus
设置systemd方式开机启动:
vim /usr/lib/systemd/system/nexus.service
[Unit] Description=nexus service After=network.target [Service] Type=forking LimitNOFILE=65536 ExecStart=/usr/local/nexus3/bin/nexus start ExecStop=/usr/local/nexus3/bin/nexus stop User=nexus Restart=on-abort [Install] WantedBy=multi-user.target
systemctl enable nexus
Tips: nexus3使用JDK8版本。
设置运行用户为nexus:
groupadd -g 333 nexus useradd -g nexus -u 333 -s /sbin/nologin -d /data/nexus3/ -c "nexus user" -M nexus vim /usr/local/nexus3/bin/nexus.rc
run_as_user="jenkins"
vim /etc/security/limits.conf
nexus - nofile 65536
设置数据存放目录(其默认在../sonatype-work/nexus3):
vim /usr/local/nexus3/bin/nexus.vmoptions
-XX:LogFile=/data/nexus3/log/jvm.log -Dkaraf.data=/data/nexus3 -Djava.io.tmpdir=/data/nexus3/tmp
mkdir -p /data/nexus3/{etc,log,tmp} chown -R nexus:nexus /data/nexus3/
拷贝默认配置文件(此文件可配置Nexus服务端口):
cp /usr/local/nexus3/etc/nexus-default.properties /data/nexus3/etc/nexus.properties
运行:
systemctl start nexus
查看:
使用浏览器打开nexus地址http://ip:8081/即可查看:
Tips:启动需要一些时间;默认管理员用户密码: admin/admin123 。
几种repository的类型:
- hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
- proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
- group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
仓库中的库文件可以在Maven执行命令打包时从中央仓库进行拉取保存,也可以自行上传。例如,Oracle的ojbc.jar驱动,受Oracle限制,Maven中央仓库中是没有的,需要自行到Oracle网站上下载,然后上传使用:
- 创建一个名为“maven-3rd”的库,用于存放中央仓库不存在的第三方资源库:
- 选择类型:
- 创建“maven-3rd”库:
- 将其加入到“maven-public”群组中:
- 然后就可以将第三方库包上传进来,点击“Upload”选择“maven-3rd”:
- 然后选择文件填写信息进行上传:
- 成功便会提示:
除了网页,也可以使用mvn命令的方式进行上传;先将刚上传的删除:
然后使用命令上传:
mvn deploy:deploy-file \ -DgroupId=com.oracle \ -DartifactId=ojdbc14 \ -Dversion=10.2.0.1.0 \ -Dpackaging=jar \ -Dfile=ojdbc14.jar \ -DgeneratePom=true \ -DupdateReleaseInfo=true \ -Durl="http://admin:[email protected]:8081/repository/maven-3rd/"
查看: