jenkins的部署与应用

2019-07-05  本文已影响0人  苏米西

一、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

1562203547240.png
2.5、安装插件

如果你之前装过呢,了解需要什么插件就“选择插件安装”,反之“点击安装推荐插件”。毕竟如果需要其他插件,可以安装完在系统中进行安装哟!


1562203809276.png
1562204286446.png
2.6、创建管理员用户

添加用户,电子邮箱等,然后保存并完成。


1562204442759.png
1562204486382.png
1562204574195.png

登录:


1562204911398.png
部署完成:
1562205018131.png

三、jenkins的配置

1、配置用户

1.1、新建用户

系统管理--管理用户--新建用户

1562207054412.png
1.2、用户权限限制

系统管理--全局安全配置

1562207909625.png
添加刚创建的用户,赋予相关权限即可
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等,可以在高级那改哟!

1562209402122.png
填写完,点击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.png
2.1、配置git地址
1562244213992.png
2.2、构建触发器

这里默认,按需更改!


1562244258118.png
2.3、构建环境
1562244632651.png
  1. 这里填写的是打好包的路径,是相对路径,相对于工作空间目录的,工作空间默认是在 $JENKINS_HOEM/workspace 目录下。每次新建一个构建任务时,会在此目录下创建一个和任务名同名的目录(比如:npc-admin),在此目录下存放从远程代码库拉取的源代码,并且构建完成的文件(比如jar 包)也会在 npc-admin/target 目录下。
  2. 是在把打好包的文件传输到远程应用服务器时,不希望被创建的目录名。 这个目录名必须是在 Source files 选项中填写的路径最前面的部分中。
  3. 远程应用服务器的目录,这个目录假如没有会被自动创建,但是此目录是给相对路径,相对于之前在系统设置中的 SSH Servers 中配置的服务器端路径,如下图中的 /data/web/npc-server
  4. 指构建后在远程应用服务器上执行的命令。

    注意:这里执行命令的用户同样是以下图中的Username 里填写的用户的身份执行的。假如执行命令是执行一个在远程应用服务器上的一个脚本,那么路径和文件都必须存在,并且,脚本中的任何相对路径都会相对于此用户的家目录。

    1562289068738.png
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

参数:

2.5、发布
1562290096015.png

查看发布情况,根据报错查明原因!


1562290181038.png
1562290568253.png

注释:SSH: Transferred 1 file(s) 有一个文件,说明发送到了远程服务器的指定目录中!

五、插件集成

请看下一篇文章,哈哈!

上一篇下一篇

猜你喜欢

热点阅读