Jenkins的安装配置和使用

1 Jenkins介绍

w3cschool中这样介绍:Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。

下图是我在网上找的,便于理解:

2 环境准备

本文介绍的jenkins是基于Gitlab + Maven + Tomcat实现自动集成、打包、部署,其他集成方式可上网了解。

2.1 环境

(1) Gitlab仓库

(2) 至少一台服务器用于安装Jdk、Maven、Git、jenkins,ip:10.8.165.11

(3) 至少一台目标生产服务器,可多台,ip:10.8.165.15

3 Jenkins安装及相关配置

这里Jenkins的安装配置介绍不是很全面的,文章只做一些基本的描述。

3.1 下载

下载jenkins的war包。网址: https://jenkins.io/download。如图:

3.2 安装

Jenkins的安装方式有很多,这里根据最简单的情况安装,运行命令:

java -jar jenkins.war --httpPort=8888 -Dfile.encoding=UTF-8,也可以使用tomcat进行部署。开放8888端口,提供局域网内客户机访问,浏览器访问10.8.165.11:8888进入到首页,首次访问需要初始化,如下图:

进入/user/.jenkins/secrets/initialAdminPassword下获取初始化管理员密码,点击continue,在有网络的情况下进入到如下页面:

可以选择推荐的插件安装,也可以选择自定义Jenkins的插件安装。无网络的情况出现如下提示:

则选择Skip Plugin Installations跳过插件安装,离线插件安装后面介绍。

插件安装完成后进入如下页面,设置登录用户:

Save and Continue。

Save and Finish,设置成功后进入到jenkins首页。

3.3 管理

(1) jenkins插件安装

jenkins依赖的插件比较多,如果安装jenkins时安装了推荐的插件,基本上已经够用了,额外的插件需要时再安装,插件的安装有两种方式:在线安装和离线安装。

A、在线安装,登录jenkins,选择系统管理,如图:

进入如下页面,点击插件管理:

Updates栏位为可更新的插件,Available为可在线安装的,Installed为已安装的,勾选需要的插件,点击Install without restart,等待安装完成。

B、离线安装。

https://plugins.jenkins.io进行插件搜索,如图:

搜索结果,选择需要的插件:

标记有required的依赖插件为必须安装的插件,点击Archives进入到jenkins插件库:

选择合适的版本,下载hpi文件:

下一步到jenkins系统管理→插件管理→Advanced选项下,上传已经下载的hpi文件,重启jenkins即可。注意:插件之间有很多依赖,根据提示下载相应版本的插件安装。

(2) jenkins系统设置

配置之前需要说明一点,提前安装插件,避免配置过程中返回安装插件,打乱思绪,因为jenkins插件互相依赖的较多,比较零乱,有遗漏的再补充,所需插件:Folders Plugin、Maven、SSH、Gitlab、Gitlab Hook Plugin、ThinBackup等及其所依赖的必须插件。

配置的大概过程为:配置jenkins工具的jdk、maven、git → 然后再进行系统环境设置 → 再配置SSH Servers。

A、jdk、maven、git配置,依次点击Manage Jenkins→Global Tool Configuration,如下,进行系统全局工具配置:

配置maven,加入maven的setting.xml的配置文件,

File path:“../conf/settings.xml”如图:

配置jdk,Name取jdk1.8.0_192(可自己随意取,这里取安装时的jdk名字),添加jdk的安装目录,JAVA_HOME:“../java/jdk1.8.0_192”如图:

配置git,Name随意取,添加git的安装路径,Path to Git executable:“../Git/bin/git.exe” 如图:

B、Jenkins系统环境设置,进入系统设置,如图:

Jenkins的Home directory:“../jenkins”,建议修改,不要使用默认的目录,修改方式点击后面的问号即可查看,如图:

Maven的jar包仓库(Global MAVEN_OPTS),此选项为构建过程中maven jar包下载的目录,在这里遇到过不同情况,经过测试,linux服务器下载后会在每个项目下创建一个的存放jar包的repository目录,windows服务器则不会,为了避免jar包重复下载,节省空间,所以在此修改到一个路径下,Global MAVEN_OPTS:“-Dmaven.repo.local=../repository”如图:

C、SSH Servers,需要先安装ssh插件,依次进入:Manage Jenkins→Configure System,下拉滚动条到Publish over SSH,配置ssh的连接,目的是通过jenkins连接服务器,对服务器进行一些列的操作,ssh 连接的方式有两种。

一种是通过密钥验证,免密登录,大致过程如下:

Jenkins服务器(11)生成密钥对,并将公钥(id_rsa.pub)保存到生产机目标服务器(15);11此时要登录15,发送请求到15,15生成随机字符串并用11的公钥加密后,发给11;11用私钥将其解密后发回给15,验证成功后登录。

这里考虑到多台服务器的部署,免去重复配置,就将密钥配置到Jenkins的公共配置里,在私有配置中配置也可以,如图:

Passphrase:密码(11服务器生成密钥对的密码,如果未设置则为空)

Path to key:私钥(id_rsa)的路径

Key:私钥(id_rsa)的内容

私有配置:

SSH Server Name:jenkins测试(随便取)

Hostname:ssh连接的目标主机ip,10.8.165.15

Username:用户名

Remote Directory:远程目录

测试连接,success表示连接成功。

另一种是通过用户名和密码的连接,通过用户名和密码连接的方式则无需配置密钥的一步,直接进行如下配置:

点击Advanced...,添加密码,测试连接success,如图:

如果多台服务器配置点击add按钮添加,配置方式一样,如图:

到此,ssh服务器已配置完毕。

4 系统部署

对于jenkins的自动构建部署,首先我们要了解jenkins工作的过程,才知道需要配置些什么,文章开头对jenkins原理大概描述了,我们要实现的就是:开发者只要通过IDE提交代码到GitLab,jenkins能自动监测到提交的最新代码,从GitLab特定分支下载源码,并通过maven构建工具进行编译打包(war、jar),通过shell脚本对项目历史版本进行备份、删除,然后通过ssh插件工具上传到生产Tomcat项目部署路径下,对Tomcat进行停止,重启,完成自动部署。

下面进行项目配置,创建项目,如图:

填写项目名称,创建maven项目,点击确定,如图:

紧接着到项目配置的页面,复制gitlab项目的ssh下载地址:

Description,填写一下项目描述:

然后进入Source Code Management(源码管理),如果在gitlab中设置了密钥,则需要到Jenkins的Credentials→System→Global credentials (unrestricted)下添加凭据,然后Credentials处可以选择所添加的凭据名称了,也可以在此处直接点Add添加,只要保证jenkins能从gitlab下载源码即可。

下一步Build Triggers,构建需求中要求IDE提交代码即立即触发构建,用到一个叫webhooks的轻量的事件处理应用,gitlab中已经有这项功能,这就需要先下载Gitlab Hook Plugin 插件,如果你安装好插件后能看到如图功能,勾选Build when a change is pushed to GitLab,这里复制 GitLab webhook URL暂时保存到记事本,后面有用。

点击Advanced...展开,点击Generate创建Secret token,再把token复制到记事本,如图:

接下来到gitlab中设置,进入到项目设置中,看到webhooks选项,点进去看到如图,将刚才保存到记事本的url和Secret Token分别填入,下拉滚动条后看见Add Webhook,点击进入。

点击Add Webhook后,在已经添加的webhook中看到,

点击test,如果看到下图。则证明连接成功。

下面进入到Pre Steps,点击Add pre-build step,进行构建前操作,目的是构建前对服务器已经部署的项目进行备份,如图:

点击Send files or execute commands over SSH,选择已经添加的ssh servers,如图:

Exec command中添加备份脚本,参考:

echo "备份war"
tomcatpath=/opt/app/apache-tomcat-8.0.
war_name=项目名称
mkdir -p ${tomcatpath}/webapps/bak
cp ${tomcatpath}/webapps/${war_name}.war ${tomcatpath}/webapps/bak/${war_name}.war-`date +%Y-%m-%d_%H%M`

点击Build,配置maven的构建,指令“clean package  -Dmaven.test.skip=true”,跳过且不编译测试类,MAVEN_OPTS仓库位置,如图:

接下来配置构建后操作,进入Post Steps,点击Add post-build step,选择Send files or execute commands over SSH,这一步操作将maven构建后的war包上传到服务器,关闭tomcat,重启tomcat,以及日志输出到jenkins一系列步骤。

点击Send files or execute commands over SSH,

Name:选择服务器,

Source files:填写构建后的war包(target/*.war),

Remove prefix:去掉Source files文件的前缀,这里就是target,

Remote directory: 远程目录,上面配置ssh servers时路径已经配好,这里不 需要重复配置。

Exec command:执行指令对tomcat进行操作。

脚本参考:

#!bin/bash
tomcatpath=/opt/app/apache-tomcat-8.0.
war_name=项目名称
echo "关闭tomcat"
sh ${tomcatpath}/bin/shutdown.sh
echo "检查tomcat是否关闭"
tomcat_pid=`ps -ef|grep "tomcat" |grep -v grep|awk '{print $2}'`
echo $tomcat_pid
kill - $tomcat_pid
echo "tomcat has shutdown"
echo "删除项目"
rm -rf ${tomcatpath}/webapps/${war_name}_bak
mv ${tomcatpath}/webapps/${war_name} ${tomcatpath}/webapps/${war_name}_bak
rm -rf ${tomcatpath}/logs/catalina.out
echo "启动tomcat"
sh ${tomcatpath}/bin/startup.sh
echo "输出日志"
sleep 8s
i=
while(($i<))
do
CHECK_RESULT=`cat ${tomcatpath}/logs/catalina.out | grep 'org.apache.catalina.startup.Catalina.start Server startup in' | wc -l`
if(($CHECK_RESULT==))
then
cat ${tomcatpath}/logs/catalina.out
echo "build success"
exit
else
echo "waiting"$i
sleep 2s
fi
i=$(($i+))
done
cat ${tomcatpath}/logs/catalina.out
echo "build fail"
exit

如需构建成功后进行邮件通知可接着配置:

到这里,项目配置大概完毕,回到项目首页,点击立即构建:

查看日志:

构建成功:

Tomcat启动成功,整个构建过程完毕,tomcat的日志打印参考linux cat指令,tail指令。

如果上面Build Triggers webhooks配置成功,那么只要提交代码到gitlab,即可自动构建,就不需要人工干预去执行构建操作了。

5 维护

5.1 备份

Jenkins的配置建议进行备份,备份方法:安装ThinBackup插件,进入Manage Jenkins→ ThinBackup,如图:

点击Settings,设置Backup directory备份目录:

回到ThinBackup插件首页,点击 Backup Now,这一步没有提示,去到备份目录下可看到备份的记录:

恢复备份点击Restore,如图,选择恢复的版本,恢复即可:

Jenkins的安装配置和使用的更多相关文章

  1. Jenkins的安装配置

    Jenkins的安装配置 一.Jenkins简介 Jenkins 是一个可扩展的持续集成引擎.Jenkins可以帮我们将代码进行统一的编译打包.还可以放到tomcat容器中进行发布.简单来说就是我们通 ...

  2. Jenkins的安装配置[转]

    Jenkins的安装配置 一.Jenkins简介 Jenkins 是一个可扩展的持续集成引擎.Jenkins可以帮我们将代码进行统一的编译打包.还可以放到tomcat容器中进行发布.简单来说就是我们通 ...

  3. 从零开始针对 .NET 应用的 DevOps 运营实践 - Jenkins & SonarQube 安装配置

    一.Overview 继续 DevOps 实施的相关内容,在上一篇的博客中,完成了对于工具链中使用到的软件所需的运行环境的配置,在这一篇的博客中,将聚焦于我们使用到的两个主要的软件:Jenkins 与 ...

  4. 【01】Jenkins:安装配置

    写在前面的话 从我的工作经历来看,刚出来的时候的第一家公司我们上线采用的是脚本上线.就是那种开发合并完代码以后,在一个固定的时间点,我们上服务器执行更新脚本打包更新.这种方法有一个很大的问题,就是对于 ...

  5. Jenkins的安装配置及使用

    一.以Jenkins在tomcat容器里运行的方式,jenkins的安装及安装时所涉及的JDK和tomcat的配置 1.首先下载tomcat, 2.下载Jenkins.war包,将war包放在tomc ...

  6. Jenkins 入门系列--Jenkins 的安装配置

    写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之--03PDF文档下载 第二章 Jenkins安装与配置 2 Jenkins安装 在最简单的情况下,J ...

  7. jenkins + sonar 安装配置

    最近把snoar 添加上了 [root@snoar data]#   wget https://sonarsource.bintray.com/Distribution/sonarqube/sonar ...

  8. 【Gerrit】持续集成工具Jenkins的安装配置与使用过程中遇到的问题整理

    1.下载war包 https://jenkins.io/download/ 2.安装 java -jar jenkins.war Error: Feb 21, 2019 2:17:25 AM wins ...

  9. CI工具Jenkins的安装配置【linux】——jenkins集成sonarqube-异常解决

    Setup 官网https://jenkins.io/ 下载war包,扔到tomcat下启动即可. 如果有port限制,在iptables中打开商品限制. 访问http://ip:port/jenki ...

随机推荐

  1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)

    C 模拟 题意:给的是一个矩形,然后√2 的速度走,如果走到边上就正常反射,走到角上,暂停反射,我们知道要不循环要不暂停,记录走到的点最短时间 /*************************** ...

  2. 00004-20180324-20180517-fahrenheit_converter--华氏温度到摄氏温度转换计算器

    00004-20180324-20180517-fahrenheit_converter--华氏温度到摄氏温度转换计算器 def fahrenheit_converter(C): fahrenheit ...

  3. python垃圾回收机制与小整数池

    python垃圾回收机制 当引用计数为0时,python会删除这个值. 引用计数 x = 10 y = x del x print(y) 10 引用计数+1,引用计数+1,引用计数-1,此时引用计数为 ...

  4. kvm和qemu交互处理io流程

    1.IO虚拟化的分类 (1)全虚拟化:宿主机截获客户机对I/O设备的访问请求,然后通过软件模拟真实的硬件.这种方式对客户机而言非常透明,无需考虑底层硬件的情况,不需要修改操作系统. QEMU模拟I/O ...

  5. mysql_study_1

    创建数据库 创建表 数据类型 插入数据的几种方法 约束 代码 CREATE DATABASE mysql_shiyan; use mysql_shiyan; CREATE TABLE departme ...

  6. Max Sum Plus Plus HDU - 1024

    Max Sum Plus Plus     HDU - 1024 Now I think you have got an AC in Ignatius.L's "Max Sum" ...

  7. 如何对tcp流认证并加密

    一个场景:目前越来越多的业务需要远程读写Redis,而Redis 本身不提供 SSL/TLS 的支持,在需要安全访问的环境下. 这时候就需要额外的手段进行加密认证,这里有两种手段:spiped 和 n ...

  8. mysql 数据库的设计三范式

    三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物 ...

  9. SQL Server2017还原数据库时指定mdf文件及日志文件的名称

    由于需要还原同一个数据库的不同备份到不同数据库中,可是在还原的时候,可是在指定目标数据库时,填写不同的数据库名称,在SQL Server Data文件夹中生成的.mdf文件还是同一个,如图,虽然是很简 ...

  10. vector某元素是否存在、查找指定元素 、去重

    vector.map 判断某元素是否存在.查找指定元素 [C++]判断元素是否在vector中,对vector去重,两个vector求交集.并集 PS:注意重载