jenkins的部署与应用

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

参数:

  • -DskipTests=true,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。

  • -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
    然后保存!

2.5、发布
1562290096015.png

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


1562290181038.png

1562290568253.png

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

五、插件集成

请看下一篇文章,哈哈!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,738评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,377评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,774评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,032评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,015评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,239评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,724评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,374评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,410评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,457评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,132评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,733评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,804评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,022评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,515评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,116评论 2 341

推荐阅读更多精彩内容