jenkins+gitlab+maven+tomcat实现自动集成、打包、部署

一、介绍

      持续集成(Continuous Integration,简称CI)是一种软件开发实践,团队开发人员每次都通过自动化的构建(编译、发布、自动化测试)来验证,从而尽早的发现集成错误。持续集成最大的优点是避免了传统模式在集成阶段的除虫会议(bug meeting),其要素包括统一的代码库、自动构建、自动测试、自动部署、频繁提交修改过的代码等。

二、环境

Jenkins 自身采用 Java 开发,所以要必须安装 JDK,本文集成的项目基于 Maven 构架,Maven 也必须安装。使用git连接远程仓库gitlab

centos7 64位  47.92.85.152  4G  安装jdk、maven、git、jenkins

centos7 64位  47.92.85.153  4G  安装gitlab

三、安装

1.jdk安装

下载jdk8版本
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

上传到服务器,解压

tar -zxvf jdk-8u40-linux-i586.tar.gz

添加环境变量配置

vi /etc/profile   //进入编辑

在文件末尾加入以下内容:

export JAVA_HOME=/usr/local/java8/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

完成编辑后让其生效

source /etc/profile 

运行命令就可以看到java版本了

java -version

2.安装maven

下载maven版本
https://maven.apache.org/download.cgi

上传到服务器,解压

tar -zxvf  apache-maven-3.6.0-bin.tar.gz

添加环境变量配置

 vi /etc/profile   //进入编辑

在文件末尾加入以下内容:

export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.0
export MAVEN=$MAVEN_HOME/bin
export PATH=$MAVEN:$PATH

完成编辑后让其生效

source /etc/profile  
mvn -version  #查看maven版本

3.tomcat安装配置

  • 下载地址:http://tomcat.apache.org/
  • 解压缩:tar -zxvf apache-tomcat-8.5.tar.gz
  • 进入Tomcat安装目录:/opt/apache-tomcat-7.0.41/bin
  • 启动Tomcat:./startup.sh
  • 关闭Tomcat:./shutdown.sh
  • 查看Tomcat日志:tail -f /opt/apache-tomcat-7.0.41/logs/catalina.out

 4.git安装

更新系统包到最新

yum -y update

安装git

yum –y install git

完毕,查看git版本号

git --version 

创建一个git用户并赋予密码

useradd git
passwd git

 设置用户名和邮箱

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

创建秘钥

ssh-keygen -t rsa -C "你的邮箱"   #一直回车,密码为空。生成的目录看输出日志创建完成后会有公钥id_rsa.pub(服务器上使用) 和 私钥 id_rsa(客户端使用)

禁用git用户shell登录(一定要禁用)

vi /etc/passwd

将git用户修改为如下(一般在最后一行)git:x:1000:1000::/home/git:/usr/bin/git-shell

修改sshd配置加权限

 chown -R git:git .ssh

 修改配置,启用ssh公钥认证

vi /etc/ssh/sshd_config

 修改如下内容:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

systemctl restart sshd  #重启ssh生效

5.gitlab安装

https://www.cnblogs.com/vyanbin/p/centos7_gitlab.html

6.Jenkins安装

下载rpm包
http://pkg.jenkins-ci.org/redhat/

使用rpm包安装命令

rpm -ih jenkins-2.155-1.1.noarch.rpm

自动安装完成之后:
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件

调整配置文件

vim /etc/sysconfig/jenkins

JENKINS_USER="root" ## 原值 "jenkins" 必须修改,否则权限不足
JENKINS_PORT="8088" ## 原值 "8080" 可以不修改,访问端口号

启动Jenkins

sudo systemctl enable jenkins
sudo systemctl restart jenkins

开放端口号

firewall-cmd --zone=public --add-port=8088/tcp --permanent #开放端口
firewall-cmd --reload  #重启防火墙

安装JDK后,Jenkins无法启动,需要修改vi /etc/rc.d/init.d/jenkins, 查找,输入/java, 添加新的jre路径
# Search usable Java. We do this because various reports indicated
# that /usr/bin/java may not always point to Java >= 1.6
# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.6.0/bin/java
/usr/lib/jvm/jre-1.6.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/bin/java
/data/java/jdk1.8.0_101/bin/java

访问
http://47.92.85.152:8088/

提示输入密码,在/var/lib/jenkins/secrets/initialAdminPassword中, 默认用户为admin

登录后提示安装插件,点击“推荐的插件”

需要安装的相关插件

  • Git plugin ## 版本管理 GIT 的插件
  • GitLab Plugin ##gitlab
  • Maven Integration plugin ## 项目构建 Maven 的插件
  • Gradle Plugin ## 项目构建 Gradle 的插件
  • Publish Over SSH ##ssh连接插件
  • 无需重启 Jenkins 插件即生效。如遇失败可重试或离线安装。

Jenkins配置全局工具

配置好后,点击保存。

全局安全配置一般默认即可

系统设置,主要配置SSH连接服

配置完成后,可点击test按钮,是否连接成功。

 接下来就可以新建maven项目任务

 配置任务

需要在这一步,设置Gredentials的秘钥,点击钥匙按钮设置,选择SSH的方式,把服务器上生成的私钥粘贴上去。配置好后,下拉框选择刚配置的连接方式。

 

触发器,可以设置定时构建。

每隔5分钟构建一次 H/5 * * * *
每两小时构建一次 H H/2 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时45分钟,从上午9:45开始,每天下午3:45结束 45 9-16/2 * * 1-5
每3小时一次,每个工作日上午9点到下午6点(也许是上午10:38,下午12:38,下午2:38,下午4:38) H H(6-18)/3 * * 1-5

构建命令设置和构建成功后执行部署命令

配置完成后,点击保存。就可以测试构建了。

shell部署命令示例如下


#!/bin/bash
export BUILD_ID=dontKillMe
source /etc/profile
echo "删除旧部署目录"
rm -rf /opt/tomcat/tomcat8_xsl/webapps/xinsilue
rm -rf /opt/tomcat/tomcat8_xsl/webapps/xinsilue.war
echo "复制war包到部署目录"
cp /var/lib/jenkins/workspace/gsd_xsl_test/gsd_xsl.web/target/xinsilue.war /opt/tomcat/tomcat8_xsl/webapps/xinsilue.war
echo "停止tomcat服务中......"
tomcat_pid=`ps -ef | grep tomcat8_xsl/ | grep -v grep | awk '{print $2}'`
if [ -z $tomcat_pid ]; then
echo "tomcat服务未启动"
else
kill -9 $tomcat_pid
sleep 5
echo "停止tomcat服务成功"
fi
cd /opt/tomcat/tomcat8_xsl/bin/
./startup.sh
echo "tomcat启动中......"
TomcatServiceCode=0
while [ "$TomcatServiceCode" != "200" ]; do
sleep 3
TomcatServiceCode=$(curl -I -m 10 -o /dev/null -s -w %{http_code} http://localhost:8096)
done
echo "tomcat启动成功......"

  

在Jenkins中运行shell脚本经常遇到权限问题,我是给jenkins一个root权限,这样就不会再遇到权限问题了。

1) vi /etc/sysconfig/jenkins

2) 找到$JENKINS_USER改为 “root”:

$JENKINS_USER="root"
3)然后更改Jenkins home,webroot和日志的所有权:

chown -R root:root /var/lib/jenins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
4).重新启动Jenkins并检查用户是否已被更改

service jenkins restart
这样我们就给jenkins设置了root权限,我们再运行shell脚本就不会提示权限问题了。

maven构建时,出现下载依赖包失败问题,然后构建失败,可以设置maven包下载位置,设置为国内的,默认是从maven中央库中去下载的

<!-- 配置阿里云 -->
<mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror>
<!--开源中国镜像仓库-->
<mirror> 
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public</url> 
<mirrorOf>central</mirrorOf>
</mirror>
原文地址:https://www.cnblogs.com/vyanbin/p/jenkins.html