Jenkins

一、Jenkins介绍

1、Jenkins概述

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。jenkins构建工具有Maven、Ant、Gradle。

2、Jenkins目标

是监控软件开发流程 快速显示问题 提高开发效率 过程控制

3、Jenkins特性

1.易于安装 # 不需要安装、不需要数据库,只需通过java -jar jenkins.war或部署到一个servlet容器中
2.易于配置 #所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进 行配置
3.测试报告 #生成JUnit或TestNG的测试报告.集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通 知。
4.文件识别 # jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包
5.分布式构建 # 支持Jenkins能够让多台计算机一起构建/测试。
6.任务(Job)和构建(build) #任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合。构建:是Jenkins的 任务的一次运行。
7.插件支持 # jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件
工作流程图:


image.png

测试环境中:
1.开发者会将代码上传到版本库中。
2.jenkins通过配置版本库的连接地址,获取到源代码。
3.jenkins获取到源代码之后通过参数化构建(或者触发器)开始编译打包。
4.jenkins通过调用maven(Ant或者Gradle)命令实现编译打包过程。
5.生成的war包通过ssh插件上传到远程tomcat服务器中通过shell脚本自动发布项目。
生产环境:
测试环境将项目测试没问题后,将项目推送到线上正式环境。
1.可以选择手动。
2.也可以通过调用脚本推送过去。

二、部署Jenkins实战

1、准备环境:

三台机器
jenkins-server ---192.168.246.212---最好是3个G以上
java-server -----192.168.246.210
git -----192.168.246.211

1.部署jenkins服务器

开始部署jenkins: 
===========1.上传jdk ===========
[root@jenkins-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/ [root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv jdk1.8.0_191/ java 
===========2.安装tomcat===========
[root@jenkins-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat- 8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
[root@jenkins-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv apache-tomcat-8.5.42/ tomcat
===========3.安装maven===========
[root@jenkins-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven- 3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@jenkins-server ~]# tar xzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/java
[root@jenkins-server ~]# cd /usr/local/java
[root@jenkins-server java]# mv apache-maven-3.5.4/ maven
===========设置变量:===========
[root@jenkins-server ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/java/maven 
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME MAVEN_HOME
[root@jenkins-server ~]# source /etc/profile
===========验证:===========
[root@jenkins-server ~]# java -version
java version "1.8.0_191" 
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) 
[root@jenkins-server ~]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/java/maven
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
下载jenkins的安装包:(Jenkins用2.14版本或以上的)
安装jenkins:2.187
----通过官网直接下载war包。
官网:http://updates.jenkins-ci.org/download/war
[root@jenkins-server ~]# wget http://updates.jenkins-ci.org/download/war/2.187/jenkins.war
===========部署jenkins===========
[root@jenkins-server ~]# cd /usr/local/tomcat/webapps/
[root@jenkins-server webapps]# rm -rf *
[root@jenkins-server webapps]# cp /root/jenkins.war .
 [root@jenkins-server webapps]# ../bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
Tomcat started.

如果启动了访问提示


image.png

请稍等片刻

2.访问界面: ---需要多等一会

http://192.168.246.212:8080/jenkins

image.png

[root@jenkins-server ~]# cat /opt/jenkins/secrets/initialAdminPassword 
b36b8b04c5b84e659701304dfe848999  ---复制这个密码粘贴到上面提示的空格里面。
然后
image.png

image.png

image.png

image.png

image.png

3.安装插件

安装插件:
所需的插件:
• Maven插件 Maven Integration plugin
• 发布插件 Deploy to container Plugin
需要安装插件如下: ======================================================= 
安装插件Deploy to container ---支持自动化代码部署到tomcat容器
GIT pligin 可能已经安装
Maven Integration :jenkins利用Maven编译,打包所需插件
Publish Over SSH :通过ssh连接
ssh 插件
安装过程:
系统管理--->插件管理---->可选插件--->过滤Deploy to container---->勾选--->直接安装
image.png

image.png

===========输入插件名后按回车===========


image.png

image.png

image.png

image.png

image.png
以上所有插件安装完成
开始配置ssh
image.png

image.png

image.png

4.添加远程ssh-server:

image.png

5.配置jdk,maven命令,全局配置

image.png

image.png

image.png

image.png

6.构建发布任务

image.png

image.png

image.png

image.png

image.png

image.png

image.png

7.调用mave命令

image.png

image.png

8.部署git仓库服务器

===========安装git客户端===========
[root@git ~]# yum install -y git #安装git客户端
生产中一般都是用普通用户去登陆的,不用超级管理员(root)登陆
[root@git ~]# useradd git # 创建git用户
[root@git ~]# passwd git #设置git用户密码
[root@git root-test]# git clone https://github.com/bingyue/easy-springmvc-maven(生产中不需要这一步)


9.部署java服务器,做jenkins打包上线

[root@java-server ~]# mkdir -p /data/application
===========上传jdk===========
[root@java-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@java-server ~]# cd /usr/local/
[root@java-server local]# mv jdk1.8.0_191/  java
===========下载tomcat===========
[root@java-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-
8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
[root@java-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /data/application/
[root@java-server ~]# cd /data/application/
[root@java-server application]# mv apache-tomcat-8.5.42/ tomcat
===========设置环境变量===========
[root@java-server ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/data/application/tomcat
[root@java-server ~]# source /etc/profile
===========测试:===========
[root@java-server ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
===========删除tomcat默认发布目录下面的内容:===========
[root@java-server ~]# rm -rf /data/application/tomcat/webapps/*
[root@java-server ~]# cd /data/application/tomcat/webapps/
[root@java-server webapps]# ls
===========创建目录和脚本:===========
[root@java-server ~]# mkdir /opt/script #创建脚本目录
[root@java-server ~]# vim app-jenkins.sh #创建脚本
i[root@java-server ~]# vim app-jenkins.sh
===========脚本内容在后面===========
[root@java-server ~]# chmod +x app-jenkins.sh #添加执行权限
[root@java-server ~]# mv app-jenkins.sh /opt/script/
===========回到Jenkins服务器传公钥给git和Java服务器===========
[root@jenkins-server ~]# ssh-keygen
[root@jenkins-server ~]# ssh-copy-id -i git@192.168.246.211 #输入git服务器端git用户的密码!
===========验证是否可以免密登录===========
[root@jenkins-server ~]# ssh git@192.168.246.211
[git@git ~]$   # 免密登录成功
[root@jenkins-server ~]# ssh-copy-id -i root@192.168.246.210 #输入Java服务器端某个普通用户的密码!
我这里用的是超级管理员root,生产中一般谁用就给谁!
===========验证是否可以免密登录===========
[root@jenkins-server ~]# ssh root@192.168.246.210
[git@java-server ~]#   # 免密登录成功

10.回到jenkins页面开始构建任务

image.png

image.png

image.png

image.png

image.png

10.登陆java-server服务器查看:

image.png

image.png
脚本内容:
#!/usr/bin/bash
#本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。 
#================ 
#Defining variables 
export JAVA_HOME=/usr/local/java 
webapp_path="/data/application/tomcat/webapps"
tomcat_run="/data/application/tomcat/bin" 
updata_path="/data/update/`date +%F-%T`" 
backup_path="/data/backup/`date +%F-%T`" 
tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'` 
files_dir="easy-springmvc-maven" 
files="easy-springmvc-maven.war" 
job_path="/root/upload"

#Preparation environment 
echo "Creating related directory" 
mkdir -p $updata_path 
mkdir -p $backup_path

echo "Move the uploaded war package to the update directory" 
mv $job_path/$files $updata_path

echo "=========================================================" 
cd /opt
echo "Backing up java project" 
if [ -f $webapp_path/$files ];then 
    tar czf $backup_path/`date +%F-%H`.tar.gz $webapp_path 
    if [ $? -ne 0 ];then 
        echo "打包失败,自动退出" 
        exit 1 
    else
        echo "Checking if tomcat is started"
         if [ -n "$tomcat_pid" ];then
             kill -9 $tomcat_pid 
            if [ $? -ne 0 ];then 
                echo "tomcat关闭失败,将会自动退出" 
                exit 2 
            fi
        fi
        cd $webapp_path
        rm -rf $files && rm -rf $files_dir
        cp $updata_path/$files $webapp_path
        cd /opt $tomcat_run/startup.sh
        sleep 5 
        echo "显示tomcat的pid" 
        echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" 
        echo "tomcat startup" 
        echo "请手动查看tomcat日志。脚本将会自动退出"
    fi
else
    echo "Checking if tomcat is started"
        if [ -n "$tomcat_pid" ];then
            kill -9 $tomcat_pid
            if [ $? -ne 0 ];then
                echo "tomcat关闭失败,将会自动退出"
                     exit 2 
            fi 
    fi

    cp $updata_path/$files $webapp_path 
    $tomcat_run/startup.sh 
        sleep 5 
        echo "显示tomcat的pid" 
        echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"
        echo "tomcat startup"
        echo "请手动查看tomcat日志。脚本将会自动退出"
fi

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

推荐阅读更多精彩内容

  • 教程:https://www.yiibai.com/jenkins/ 本节内容: Jenkins介绍 安装部署Je...
    达微阅读 9,002评论 2 77
  • 1Jenkins安装 在最简单的情况下,Jenkins只需要两个步骤: 1.下载最新的版本(一个WAR文件)。Je...
    米粒简书主页阅读 4,779评论 0 1
  • 目录 一、jenkins介绍二、jenkins安装三、了解jenkins四、发布php代码五、jenkins邮件配...
    XiaoMing丶阅读 13,090评论 0 6
  • jenkins是一个用Java编写的开源自动化服务器,它是Hudson的一个分支project ; 它是一个持续集...
    _palm阅读 10,486评论 0 16
  • 在与员工沟通中,尤其是给予反馈之前,首先要客观的了解清楚事情原委,避免主观“推理”让自己先戴上了有色眼镜。 我们很...
    白杨老窖阅读 283评论 0 0