什么是Jenkins?


Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。

为什么要用Jenkins?


是所有CI产品中在安装和配置上最简单的。
基于Web访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了AJAX的即时反馈。
Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。
Jenkins拥有大量的插件。这些插件极大的扩展了Jenkins的功能;它们都是开源的,而且它们可以直接通过web界面来进行安装与管理。

准备工作


这里需要说明下,本次搭建是在Ubuntu16.04上完成的搭建(Maven + git + Tomcat ),不同的Linux系统搭建可能有些细微的差别

Tomcat的安装

Tomcat 8.0.43官方下载地址

下载完把Tomcat目录下面的东西放到 /usr/local/tomcat 下面
然后把CATALINA_HOME配置好,并想办法开机启动Tomcat

mv apache-tomcat-8.0.43 /usr/local/tomcat

配置开机启动Tomcat
在/etc/init.d/ 新建脚本 命名为tomcat

#!/bin/sh

#tomcat auto-start

# description: Auto-starts tomcat

# processname: tomcat

# pidfile: /var/run/tomcat.pid

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

case $1 in  
start)  
    sh /usr/lib/tomcat/bin/startup.sh  
    ;;  
stop)  
    sh /usr/lib/tomcat/bin/shutdown.sh  
    ;;  
restart)  
    sh /usr/lib/tomcat/bin/shutdown.sh  
    sh /usr/lib/tomcat/bin/startup.sh  
    ;;  
*)  
    echo 'Usage:tomcat start|stop|restart'  
    ;;  
esac 

给tomcat赋予可执行权限

sudo chmod +x tomcat

配置符号链接

sudo ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat  
sudo ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat

安装sysv-rc-conf

sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf

这时候会进入启动项管理
在刚才添加的tomcat上面使用空格选中上2 3 4 5( X 代表被选中)

在Tomcat安装这里其实没什么特别的,楼主刚开始就踩坑了,图方便用apt-get直接装的tomcat 7,结果出了很多问题,后来去apache官网下的Tomcat 9结果更坑爹了,Tomcat 9 M19版里面使用Jenkins自动化部署会报错FAIL - Deploy Upload Failed,查看了下host-Manager的启动日志,发现报的错误是Exception: Cannot find operation isServiced,去谷歌一搜,发现Tomcat M19版这里面确实是有问题的,已经提了Bug,并且将会在Tomcat M20版本解决这个问题,楼主只好下了个Tomcat 8,结果立马就好使了。。。

JDK的安装

我这边是从官网下载的JDK,解压完之后替换掉系统的JDK。
我这里把jdk解压完放在了/usr/local/jdk/
配置环境变量

vi /etc/profile
#在文件默认追加
export JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

编辑完成后,使更改立即生效

source /etc/profile

对应地替换系统SDK

sudo update-alternatives --install /usr/bin/java java /usr/local/jdk/bin/java 300  
sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk/bin/javac 300

Maven安装

wget http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -xvzf apache-maven-3.3.9-bin.tar.gz 
sudo mv apache-maven-3.3.9-bin /usr/local/mvn

这里就完成了 maven的下载解压以及移动到/usr/local/mvn目录
然后配置系统环境变量

vi /etc/profile
#在文件末尾追加
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:MAVEN_HOME

编辑完成后,使更改立即生效

source /etc/profile

git 安装

sudo apt-get install git

开始安装

Jenkins的安装

sudo apt-get install jenkins

这里也可以选择去官网下载Jenkins的war包扔到Tomcat的webapps目录

安装完需要修改Jenkins的默认端口号(默认8080与Tomcat冲突)

准备插件

因为GFW的影响,Jenkins安装过程可能不能把全部插件都能安装完毕,有红叉的时候直接跳过,过后再从Jenkins官网安装即可

必备的插件有

Github
SSH
Deploy to container Plugin
邮件提醒插件(可能已经内置了)

去官网下好后进到本地Jenkins管理界面->系统管理->插件管理->高级
把刚才下载的插件上传上去
一起安装完毕再重启

然后进系统管理->Global tool configuration

Global tool configuration


把安装好的JDK、Maven、git设置好,然后就可以新建项目了,我这里面比较偷懒,直接让Jenkins在线安装了一个JDK

配置开发环境

完成安装,新建项目

新建maven项目

源码管理

源码管理这里我们选择git,上面添上你的远程仓库地址
源码管理

配置SSH免密登录

下面的Credentials可以配置SSH免密登录远程仓库

需要在本地生成一个SSHKey

ssh-keygen -t rsa -P ''

输入一次回车即可

Ubuntu 不像Mac里面有Pbcopy这样方便的工具,需要安装一个xclip来复制我们生成的公钥。

sudo apt-get install xclip

cat ~/.ssh/id_rsa.pub |xclip -selection c

这样新生成的公钥就进到我们的粘贴板里面了

把这个公钥扔进远程仓库的SSHkey里面

同样地、在刚才的Credentials新建,类型选择 SSH with private key,选择from ~/.ssh

Username 随便起 比如起24k

配置私钥

然后回到Credentials就可以选择24k了
配置远程仓库

配置构建触发器

构建触发器这里,可以配置定时任务用来定时构建你的Web项目

这里我选的是POLL SCM,它会按照你给定的时间去检查远程代码仓库的版本信息,并自动拉取到你的机器上完成构建动作,这里可以配置日程表定时构建,这里面给出常用日程表配置

每15分钟构建一次:H/15 * * * * 或/5 * * *

每天8点构建一次:0 8 * * *

每天8点~17点,两小时构建一次:0 8-17/2 * * *

周一到周五,8点~17点,两小时构建一次:0 8-17/2 * * 1-5

每月1号、15号各构建一次,除12月:H H 1,15 1-11 *

配置构建完成后自动部署至Tomcat容器

构建完成后可以配置构建后的操作,这里就要用到刚才安装的deploy to container插件了。

新增构建后操作,选择deploy war/ear to container

这里面选择的Tomcat 7.x

Deploy war to a container

这里对参数解释一下

WAR/EAR就是你要发布的WAR包,用的是相对路径

Context Path 就是你的项目发布后的访问路径 比如http://xxx.xxx.xx:8080/Context Path

Manager user name

Manager password

Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Manager也成为了使用非常普遍的功能应用。Tomcat 默认Manager User是没有启用的,所以我们要启用Manager的用户
Manager应用使用的是 Tomcat安装目录下conf/tomcat-users.xml的文件,找到并打开

sudo vi /usr/local/tomcat/conf/tomcat-users.xml
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="both" password="both" roles="tomcat,role1"/>
  <user username="role1" password="role1" roles="role1"/>

上面这几行 默认是被注释掉的,把注释干掉,并加上下面的几行

<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager,manager-script"/>

文件尾部的完整配置

 <role rolename="tomcat"/>
 <role rolename="role1"/>
 <user username="both" password="both" roles="tomcat,role1"/>
 <user username="role1" password="role1" roles="role1"/>
 <role rolename="manager"/>
 <role rolename="manager-gui"/>
 <role rolename="admin"/>
 <role rolename="admin-gui"/>
 <role rolename="manager-script" />
 <user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager,manager-script"/>

文件里面的 user 现在用户名密码全都是 tomcat,需要的话可以自行修改成别的。

我们这里现在就可以在Manager 的username上添上你填好的username和password和tomcat-users.xml配置文件里面的对应,我的这里面全都是tomcat.

这样就算配置完成了.

完成所有配置后对项目立即构建,然后点开Console Output就可以查看到构建日志了,没有什么问题的话就完成了构建。Enjoy~

部署完成

可能遇到的问题

1.Linux 系统是多用户的,所以在这种环境的配置上不同的用户很容易出问题

2.使用Maven搭建项目的时候,依赖包解析失败,我的POM里面有个Ojdbc14,因为Oracle已经收费了,所以我们需要把这个jar包打到自己的Maven本地仓库里面

这里需要切到对应的jar包目录执行下面的命令,注意用Jenkins部署的时候会产生一个Jenkins用户,所以打包时候一定要切到Jenkins用户,否则就需要自己把jar包拖拽到/home/Jenkins/目录下的maven仓库下面了

打包命令是

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc14.jar -DgeneratePom=true 

这里,我的Ojdbc14.jar是10.2.0.3.0版本,在下载的时候,可以自行改成你对应的版本

Pom.xml里面也要依赖就写你打包的jar版本就可以了,比如我这里

<dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc14</artifactId>
      <version>10.2.0.3.0</version>
</dependency>
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐