1.下载jenkins的war包

wget "http://mirrors.jenkins.io/war-stable/latest/jenkins.war"

2.启动jenkins程序

nohup java -jar jenkins.war --httpPort=52201 &>> /root/jenkins.log &

3.访问jenkins

http://10.135.4.62:52201


4.初始化安装

1)首次启动jenkins,出于安全考虑,jenkins会生成一个随机的口令到 /root/.jenkins/secrets/initialAdminPassword 文件中,复制文件中的口令到jenkins即可通过访问。

wKiom1k2UDWQARR2AACo0wXbxpw581.png

2)跳过插件的初始化设置,后面我们再根据实际情况选择安装

wKioL1k2UELz-RuWAABxIomDsco593.png

3)创建管理员用户和密码

wKiom1k2UE3zQsp6AABbFXx5ylM100.png

4)初始化安装完毕

wKioL1k2UFmByABhAAA7OVFwYJc387.png

5.安装插件

1)进入插件管理,系统管理——插件管理——可选插件

wKioL1k2UGSwAolQAAE7Qs5VzWA536.png

wKioL1k2UHCzHhVtAAB5-66p-HI655.png

2)安装MAVEN插件

①在过滤搜索框输入maven,在搜索到的插件中找到 maven integration plugin

wKiom1k2UHuzg6vwAACgZ-2n7p4421.png

②勾选后,点击 直接安装

wKiom1k2UIbjgzhJAADbB5WorWk199.png

③等待片刻后,安装成功

wKioL1k2UJLh662aAAC8mAy3XXg509.png

④安装成功后,在新建一个任务时,就会出现构建maven项目了

wKiom1k2UJ3isnBSAAByirJjMrI008.png

wKioL1k2UKahCRLtAAB0bUMGmHY804.png

3)安装svn插件 Subversion Plug-in

wKioL1k2ULDB9jZbAABO5pGOnCQ868.png

安装成功后,在新建项目的源码管理中,就会出现一个 Subversion 的选项

wKioL1k2ULvRmuUJAAAN_c46v1o805.png

4)安装 Deploy to container Plugin 插件

wKiom1k2UMyhBkRdAAA3OjgJzt4468.png

安装成功后,在新建项目的构建后操作中,就会出现一个 Deploy war/ear to a container 的选项

wKiom1k2UNfRFQk0AAA1l_7Voeg188.png

6.配置maven

1)安装maven(请根据项目的实际情况选择合适的maven版本,以避免项目代码编译失败)

wget "http://apache.fayea.com/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz"
tar -zxf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 /usr/local/maven
echo 'export MAVEN_HOME=/usr/local/maven' >> /etc/profile
echo 'export PATH=$PATH:$MAVEN_HOME/bin' >> /etc/profile
source /etc/profile

验证是否安装成功:

mvn -version

wKioL1k2UOCjhAUdAAArMG4rsxs308.png

2)配置maven

①进入 Global Tool Configuration

wKiom1k2UOvh34p8AAFWMls3nyo040.png

②点击 新增maven,配置已安装的maven的MAVEN_HOME路径,然后点击 Save 保存

wKioL1k2UPajS88VAAC6apBAiDY978.png

7.开始创建一个项目

1)点击新建任务

wKiom1k2UQKTUc9oAABewyqCSWc046.png

2)输入一个项目名称,选择 构建一个maven项目

wKiom1k2UQ2DobKYAAC3K-K3aJw768.png

3)设置构建保存的天数和最大个数

wKioL1k2URrDRH2lAACjGpZtWVc574.png

4)配置svn地址

①输入svn的项目地址

wKiom1k2USiDWtRSAAC69Z0s1T8376.png

②然后点击 Add 打开svn认证窗口

wKioL1k2UTvBnFhoAAAofaCRpqc225.png

③输入svn的账号和密码(必须有权限读取该项目地址)

wKiom1k2UUeyXcUJAABjUkcHeS0504.png

④添加完毕,选择svn账号

wKiom1k2UVLTasNgAAAWUK3FhWo634.png

5)构建触发器使用默认设置

wKioL1k2UVzy4iWoAABiIwNpp4E718.png

6)编译选项使用 pom.xml 文件进行编译,并使用 clean package 进行打包

wKioL1k2UWfybdpCAAAR0BXmtKc992.png

7)Post Steps设置

①选择编译成功后执行脚本

wKiom1k2UXOwInXgAAA3PzN9Rfw767.png

②输入以下内容执行shell命令

BUILD_ID=DONTKILLME
bash /usr/local/scripts/auto_publish.sh target/*.war /data/ljq2_tomcat/webapps /data/ljq2_tomcat /root/configure/ljq2.0

wKioL1k2UYPzwD1LAABD0tEZBxU555.png

8)构建后的操作

wKioL1k2UaDCn79UAAAz3KSHEiY383.png

9)配置完毕后,点击 保存


8.脚本配置

1)脚本内容

[root@dev ~]# cat /usr/local/scripts/auto_publish.sh
#!/bin/bash
#
#############################################
# author:Ellen
# describes:自动化部署tomcat项目
#           请在jenkins项目下执行此脚本
# version:v1.0
# updated:20170606
#############################################
#
# 需要部署的位于jenkins项目下的war包相对路径
program_path=$1
# war包名称
program_name=`basename $program_path`
# tomcat项目部署的路径
project_path=$2
project_root_path=$project_root_path
# tomcat家目录
tomcat_home=$3
# 需要替换项目配置文件的源路径
configure_path=$4
# 备份路径
backup_path=/data/backup

# 仅限指定用户运行本脚本
if [ $EUID != "0" ];then
    echo "Please use root run script!!!"
    exit 1
fi

#限制位置参数个数
if [ $# -lt 3 -o $# -gt 4 ];then
    echo "请输入3个或者4个需要传入脚本的位置参数,并以空格隔开。"
    echo "分别为:需要部署的位于jenkins项目下的war包相对路径 tomcat项目部署的路径 tomcat家目录 需要替换项目配置文件的源路径[可选]"
    exit 1
fi

# 删除旧备份
Del_backup()
{
    # 保留备份文件天数
    save_days=7
    if [ -d $backup_path ];then
        find $backup_path -mtime +$save_days -exec rm -rf {} \;
    fi
}

# 备份tomcat项目
Bacukup()
{
    # 备份后的路径
    backup_dir=${backup_path}/`date +%Y%m%d`
    if [ ! -d $backup_dir ];then
        mkdir -p $backup_dir
    fi
    cd $project_path
    # 打包tomcat项目
    jar -cf ROOT.war ROOT
    mv ROOT.war $backup_dir
    cd -
}

# 重启程序
Restart()
{
    num1=`ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"|wc -l`
    if [ $num1 -ne 0 ];then
        bash ${tomcat_home}/bin/shutdown.sh &> /dev/null
    fi
    sleep 5
    num2=`ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"|wc -l`
    if [ $num2 -eq 0 ];then
        bash ${tomcat_home}/bin/startup.sh &> /dev/null
        ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"
    else
        pid=`ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"|awk {'print $2'}`
        kill $pid
        sleep 5
        bash ${tomcat_home}/bin/startup.sh &> /dev/null
        ps aux|grep -w "$tomcat_home"|grep -Evw "bash|grep|vim|vi|mv|cp|scp|cat|dd|tail|head|script|ls|echo|sys_log|logger|tar|rsync|ssh"
    fi
}

# 备份项目并删除旧备份
if [ -d $project_root_path ];then
    Bacukup
    Del_backup
    rm -rf $project_root_path/*
fi

 将war包拷贝至tomcat项目路径
if [ -e ${program_path} ];then
    cp $program_path $project_root_path/
fi

# 解压war包
if [ -d $project_root_path ];then
    cd $project_root_path
    jar -xf $program_name
fi

# 如果需要替换配置文件则先进行替换,再重启程序,否则直接重启程序
if [ -z $configure_path ];then
    rm -f $program_name
    Restart
else
    cp -r ${configure_path}/* $project_root_path/
    rm -f $program_name
    Restart
fi
[root@dev ~]#

2)脚本参数说明:

必须填入3-4个位置参数

target/*.war:需要部署的位于jenkins项目下的war包相对路径(如/root/.jenkins/workspace/ljq2.0)

/data/ljq2_tomcat/webapps:需要将生成的war包部署到tomcat指定的项目路径

/data/ljq2_tomcat:tomcat的家目录

/root/configure/ljq2.0:可选,需要替换项目配置文件的源路径,需要注意的是源路径下的目录结构需要与tomcat项目的目录结构保持一致,如:

wKioL1k2UcTRuvYcAAAtIITiPRQ061.png

wKiom1k2Uc7jklLqAACFHNlJGcY445.png


①需要替换配置文件的位置参数

bash /usr/local/scripts/auto_publish.sh target/*.war /data/ljq2_tomcat/webapps /data/ljq2_tomcat /root/configure/ljq2.0

②不需要替换配置文件的位置参数

bash /usr/local/scripts/auto_publish.sh target/*.war /data/ljq2_tomcat/webapps /data/ljq2_tomcat


9.构建项目

1)手动构建

①选择指定的项目,点击 立即构建,构建过程会同步svn项目代码,编译过程会下载项目的相关依赖包,请耐心等待

wKiom1k2UdvzhVAUAACghBrCse4038.png


②构建后,在构建历史会显示该次构建的ID和进度,点击圆球图标会进入到控制台输出窗口,显示详细的构建过程和结果

wKiom1k2UenBwh6lAACw36HpRFs189.png

③编译完成后,将会打包成war包,并调用指定的部署脚本(auto_publish.sh)进行部署和重启项目程序

wKiom1k2UfWAwDjFAACeyi9Yg98669.png

④构建完毕

wKioL1k2UgDh8BypAABWTtp7dUw165.png

2)自动构建

如果希望jenkins定时自动构建项目,可在Maven项目中配置构建触发器,在 Poll SCM 项中配置定时任务,如 H/30 * * * *,表示每30分钟定时检查版本库,如果发现有新的提交就触发构建

wKiom1k2UhaB-2AfAABn4mExNdA478.png


10.创建用户

1)进入 管理用户

wKiom1k2UiezNGijAAIlYLRWfxg259.png

2)新建用户

wKioL1k2UjXD0189AAAyvqiyOwA487.png

3)输入新用户的信息

wKiom1k2UkDwpDzlAABUtByYnNo724.png

11.用户授权

1)进入 Configure Global Security

wKioL1k2UmexyM22AADL1EBnt3M767.png

2)在 授权策略 中选择 项目矩阵授权策略,在 添加用户/组 中输入新用户的账号并点击 添加

wKioL1k2UnXAygiLAABxZkVuYP8395.png

3)对用户进行相应的授权

wKiom1k2UobjfVoPAABp3CPtQgM635.png