Jenkins安装与使用

概述

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网站上下载,然后上传使用:

  1. 创建一个名为“maven-3rd”的库,用于存放中央仓库不存在的第三方资源库:
  2. 选择类型:
  3. 创建“maven-3rd”库:
  4. 将其加入到“maven-public”群组中:
  5. 然后就可以将第三方库包上传进来,点击“Upload”选择“maven-3rd”:
  6. 然后选择文件填写信息进行上传:
  7. 成功便会提示:

除了网页,也可以使用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/"

查看:

发表评论

error: Content is protected !!