一、Jenkins概述
image.png二、jenkins的部署
1、环境需求
java-1.8、git、maven等
环境部署简略!
2、jenkins的安装
2.1、下载
本文采用rpm包的形式进行安装,选择自己需要的版本进行安装。
地址:https://pkg.jenkins.io/redhat-stable/
2.2、安装
本文采用的是jenkins-2.121.3的版本。
# jenkins-2.121.2-1.1.noarch.rpm
# rpm -qla|grep jenkins-2.121.3-1.1.noarch.rpm
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
# 可以看到默认的一些安装目录,这里根目录是/var/lib/jenkins,考虑到分区,/var一般空间很小!可以进行更改。当然你也可以安装完,在/etc/sysconfig/jenkins中更改!看个人喜好吧!更改也是看情况吧!
更改方法:
# rpm -i --relocate /var/lib/=/data/svr/ jenkins-2.121.3-1.1.noarch.rpm
# 安装
# rpm -ivh jenkins-2.121.3-1.1.noarch.rpm
ps:本文没有进行更改目录,默认安装的!
# egrep -v "^$|*#" /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="apps"
# 默认是jenkins用户,但是我们没有创建这个用户,所以执行某些命令是会报错的,这里也不建议创建,为方便运行脚本等权限问题,需要修改运行用户哟,改成root用户也行,用常用用户也是可以的,方便执行脚本等操作!
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"
# 端口建议改下,毕竟怕多个java项目会有端口冲突!
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""
2.3、启动
# sudo service jenkins start #centos 6
# sudo systemctl start jenkins #centos 7
# 亦或是 /etc/init.d/jenkins start
# chkconfig jenkins on #开机启动
# lsof -i :8080
# 或 netstat -tanp|grep 8080
2.4、初始化jenkins
浏览器访问:http://ip:8080
2.5、安装插件
如果你之前装过呢,了解需要什么插件就“选择插件安装”,反之“点击安装推荐插件”。毕竟如果需要其他插件,可以安装完在系统中进行安装哟!
1562203809276.png
1562204286446.png
2.6、创建管理员用户
添加用户,电子邮箱等,然后保存并完成。
1562204442759.png
1562204486382.png
1562204574195.png
登录:
1562204911398.png
部署完成:
1562205018131.png
三、jenkins的配置
1、配置用户
1.1、新建用户
系统管理--管理用户--新建用户
1562207054412.png1.2、用户权限限制
系统管理--全局安全配置
添加刚创建的用户,赋予相关权限即可
1562208265375.png
ps:务必要点击下方的保存哟!
2、插件管理
系统管理--管理插件--可选插件
选择自己需要的插件进行安装,点击直接安装,最好点击完勾选重启!
一般插件:
Ansible plugin
Ant Plugin
Blue Ocean
Build Timeout
Email Extension Plugin
Git Parameter Plug-In
Gitlab Hook Plugin
GitLab Plugin
Maven Invoker plugin
Maven Integration plugin
Publish Over SSH
SSH plugin
SSH Slaves plugin
Rebuilder
Safe Restart
1562208831801.png
3、系统设置
系统管理--系统设置
主要是把一些所需的环境添加上!这里简略!
3.1、配置远程连接
说一下最后那个Publish over SSH,这个就是把包发送到远程服务器!
主要有两种形式,密码和私钥连接!
passphrase: 这个是通过密码的形式连接
Path to key:私钥路径 Path to key 和key 填其一就行!
key:私钥
# ssh-keygen
# Generating public/private rsa key pair.
Enter file in which to save the key (/home/apps/.ssh/id_rsa) 一直按回车
# cd /home/apps/.ssh
# cat id_rsa.pub >> authorized_keys
# scp authorized_keys apps@192.168.3.19:/home/apps/.ssh #发送到远程服务器
Remote Directory:远程目录
当然如果还有其他特殊要求,比如端口不是默认的22等,可以在高级那改哟!
填写完,点击Test configuration,如果显示success,则表明正常连接!否则需要排查密码、以及私钥对不对咯!
1562241311905.png
保存即可!
4、全局工具配置
系统管理--全局工具配置
这里主要是添加git、maven等环境
如果本机安装了git、maven等环境,添加安装路径就行!没有的话,勾选自动安装!
例如git
Name:git
Path to Git executable:/data/svr/git/bin/git
maven: maven
MAVEN_HOME: /data/svr/maven
1562219207961.png
四、新建项目
1、配置凭据
1562243373375.png添加凭据,git用户以及密码
1562243517079.png
2、新建maven项目
1562243747553.png2.1、配置git地址
1562244213992.png2.2、构建触发器
这里默认,按需更改!
1562244258118.png
2.3、构建环境
1562244632651.png- 这里填写的是打好包的路径,是相对路径,相对于工作空间目录的,工作空间默认是在
$JENKINS_HOEM/workspace
目录下。每次新建一个构建任务时,会在此目录下创建一个和任务名同名的目录(比如:npc-admin
),在此目录下存放从远程代码库拉取的源代码,并且构建完成的文件(比如jar
包)也会在npc-admin/target
目录下。 - 是在把打好包的文件传输到远程应用服务器时,不希望被创建的目录名。 这个目录名必须是在
Source files
选项中填写的路径最前面的部分中。 - 远程应用服务器的目录,这个目录假如没有会被自动创建,但是此目录是给相对路径,相对于之前在
系统设置
中的SSH Servers
中配置的服务器端路径,如下图中的/data/web/npc-server
- 指构建后在远程应用服务器上执行的命令。
注意:这里执行命令的用户同样是以下图中的
1562289068738.pngUsername
里填写的用户的身份执行的。假如执行命令是执行一个在远程应用服务器上的一个脚本,那么路径和文件都必须存在,并且,脚本中的任何相对路径都会相对于此用户的家目录。
2.3.1、发布脚本
# cd /data/web/npc-server
# vim deploy.sh
#!/bin/bash
# auther:suketongxue
# date:2019/6/30
DATE=$(date +%Y%m%d%H%M%S)
source /etc/profile
#项目根目录
PROJECT_DIR=/data/web/npc-server
#应用执行根目录
APP_DIR=$PROJECT_DIR/$1
#打出参数
echo "JENKINS_HOME:"$JENKINS_HOME
echo "APP_DIR:"$APP_DIR
echo "JARFILE_NAME:"$JARFILE_NAME
#自动创建备份目录
if [ ! -d $APP_DIR/backup ];then
mkdir -p $APP_DIR/backup
fi
#杀掉原进程
cd $APP_DIR
JAR_NAME=`ls -lt .|grep "jar$"|head -n 1|awk '{print $NF}'`
echo ">>>>>>>>>>>Start killing old processes<<<<<<<<<<<<<<<"
PID=`ps -ef | grep "$JAR_NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo "$PID"
echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
for pid in $PID
do
kill -9 $pid
echo "killed $pid"
done
echo ">>>>>>>>>>>>Finish kill old processes<<<<<<<<<<<<<<<<"
#备份刚打的jar包
cd $APP_DIR
echo ">>>>>>>>>>>>>>>>>Start backup<<<<<<<<<<<<<<<<<<<<<<<<"
cp $JAR_NAME $APP_DIR/backup/$JAR_NAME-$DATE
echo ">>>>>>>>>>>>>>>>finish backup<<<<<<<<<<<<<<<<<<<<<<<<"
#启动应用并打日志
echo ">>>>>>>>>>>>>>>>>>>Start to run<<<<<<<<<<<<<<<<<<<<<<"
cd $APP_DIR
java -jar $JAR_NAME > out.log &
if [ $? = 0 ];then
sleep 30
tail -n 50 out.log
fi
echo ">>>>>>>>>>>>>>>>>>>finish to run<<<<<<<<<<<<<<<<<<<<<"
cd $APP_DIR/backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
2.4、构建
1562289925118.png参数:
-
-DskipTests=true,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
然后保存!
2.5、发布
1562290096015.png查看发布情况,根据报错查明原因!
1562290181038.png
1562290568253.png
注释:SSH: Transferred 1 file(s) 有一个文件,说明发送到了远程服务器的指定目录中!
五、插件集成
请看下一篇文章,哈哈!
网友评论