大家好,我是阿飞云

怕什么真理无穷,进一步有近一步的欢喜

本文是团队内小兄弟的学习笔记整理而来。看完本文大体了解为什么要使用Jenkins,部署Jenkins依赖的环境,以及如何用Jenkins进行应用自动部署。

为什么要搭建Jenkins环境

在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;或者前后端分离后,经常会修改接口,然后重新部署;这些情况都会涉及到频繁的打包部署;手动打包常规步骤:

•1.提交代码•2.问一下同组小伙伴有没有要提交的代码•3.拉取代码并打包(war包,或者jar包)•4.上传到Linux服务器•5.查看当前程序是否在运行•6.关闭当前程序•7.启动新的jar包•8.观察日志看是否启动成功•9.如果有同事说,自己还有代码没有提交……再次重复1到8的步骤!!!!!(一上午没了)

那么,有一种工具能够实现,将代码提交到git后就自动打包部署,答案是肯定的:Jenkins 。当然除了Jenkins以外,也还有其他的工具可以实现自动化部署,如Hudson等 ,只是Jenkins相对来说,使用得更广泛。

总结一下:不搭建自动化环境的话,如果需求急,任务多的情况上,通过人工的方式操作,那效率真的太低了,拥有自动化部署环境,那幸福感很快就上来了:

•程序自动部署,节约时间•环境一键部署,不怕频繁改代码

Jenkins 基本介绍

Jenkins是一个开源软件项目,是基于Java开发的一种[持续集成]工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

基本环境

•1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。•2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。•3.maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle 以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置。

Jenkins部署安装

本次使用虚拟机进行Jenkins自动化部署环境的搭建,相关的软件版本和基本环境安装如下:

一、环境准备

1、Linux

本文基于虚拟机进行部署操作,操作系统版本:Ubuntu 20.04.3 LTS

本次用到的服务器信息:3台linux虚拟机 192.168.179.130:jenkins主节点 192.168.179.133:jenkins从节点 192.168.179.132:应用服务器

2、JDK安装

更新软件包列表
sudo apt-get update安装openjdk-8-jdk:
sudo apt-get install openjdk-8-jdk查看java版本,看看是否安装成功
java -version

这里我安装的java版本是:

3、Maven安装

安装maven的命令

sudo apt install maven

成功后使用命令查看版本等信息

mvn -v

二、部署Jenkins

1、war包下载

wget https://mirrors.huaweicloud.com/jenkins/war/latest/jenkins.war

2、启动Jenkins

java -jar jenkins.war --httpPort=8001

启动后会生成密码(61d703f7a3464674b8a8a36b4dd915f5),如图所示:

3、初始化Jenkins

在浏览器中输入http://your_ip_or_domain:80[1]01耐心等待插件下载完成输入想创建的用户名和密码:admin/admin123456初始界面如下:

4、Jenkins插件

插件能够帮助我们更好的使用jenkins,这里介绍几个常用的插件。具体操作步骤如下

1)rebuilder

重新构建任务

2)safe restart

安全重启jenkins

3)Maven Integration plugin

帮助创建maven任务

4)git parameter

安装此插件后可以进行参数化构建,后续会介绍操作方法,详细的操作也可以参考:http://www.mydlq.club/article/45/

5)publish-over-ssh

此插件可以帮助我们将编译的好jar/war包通过ssh的方式丢到对应的服务器上,但是目前publish-over-ssh暂停发布了,在插件管理中搜不到此插件。

5、jenkins配置

1)安全配置

jenkins默认的安全性是用户登陆后可以做任何事情,不是很安全,所以需要对非管理员账号做一些限制 进入全局安全配置

1、配置管理员权限 找到授权策略后,点击安全矩阵->add user,选择创建的admin账号,全选权限。

2、配置普通账号 目前没有普通的账号,需要新建一个账号,具体操作步骤:系统管理->管理用户->新建用户给该账号取消掉管理员权限,此账号没有系统管理的权限

2)全局工具配置

操作步骤:系统管理->全局工具配置 1、JDK配置 JAVA_HOM:/usr/lib/jvm/java-8-openjdk-amd64不知道JDK安装在哪的可以通过以下命令查找

# 从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径
which java

file /usr/bin/java

重复使用file命令,替换file后的输入内容为最新结果,最后可以找到安装目录

2、maven配置

三、创建构建任务

1、git配置

在创建任务之前需要配置一下git或者其他代码管理仓库,确保服务器能够拉取到代码,这里我使用的是gitee 这里不详细展开说明,自行百度或参考:https://blog.csdn.net/liyanpig/article/details/105879263

2、创建maven项目

来到jenkins首页,点击左上角或下图所示地方创建任务jenkins可以创建多种类型的任务,这里以maven任务举例说明。如果你的任务类型不存在下图选中的任务类型,那就是没有下载Maven Integration plugin插件

选择源码管理->Git,输入项目gitee地址,初次使用时会报如下错误添加凭证,点击上图添加,输入gitee的账号密码后点击添加即可,然后选择刚刚添加的凭据,就不会报错了Additional Behaviours(可选),填写目录名,选择后任务会生成一个子目录,便于管理在Build处新增maven命令clean install,然后点击保存->立即构建,执行任务可以点击此处查看构建日志可以看到输出success,表明任务执行成功可以发现服务器中生成了jar包

3、执行shell命令

jenkins不光可以进行编译等操作,在任务执行过程中还可以执行shell命令,帮助我们更好的完成自动化部署操作,选择刚刚创建的任务,进行配置,选择执行shell,如下图所示我们可以在maven编译完成后执行shell命令将jar包scp到应用服务器,具体shell命令如下所示: 这里注释了jar包的启动脚本命令,测试时可以简单使用java -jar替代

# Jenkins执行脚本:
#####
pwd=$JOB_NAME;
appName=${pwd##*-};
jarName="${appName}-1.0-SNAPSHOT";
export LANG=zh_CN.UTF-8
ssh lilei@192.168.179.132 "mkdir -p /home/lilei/service/$JOB_NAME";
scp -r $WORKSPACE/target/*.jar lilei@192.168.179.132:/home/lilei/service/$JOB_NAME;
ssh lilei@192.168.179.132 "/home/lilei/service/$JOB_NAME/start.sh";

上述命令执行成功的前提是jenkins服务器与应用服务器之间实现了免密登陆,否则会失败。以上脚本其实可以使用publish-over-ssh插件使用,功能更加丰富强大,可惜暂停发布了,感兴趣的可以自行探索

4、参数化构建

上述任务构建时基于mater分支,不能够灵活的切换分支。可以通过设置参数化构建过程动态设置每一次任务执行时的分支。前提条件:安装git parameter插件

在任务配置中勾选参数化构建过程,选择git参数名称:branch,类型:分支修改源码管理中的指定分支为${branch}点击build with parameters可以看到项目的所有分支,选择某个分支就可以构建任务了

四、多节点构建

业务量变大时,单台的jenkins进行自动化构建部署,就显得没那么灵活,jenkins的集群无需在额外的主机安装jenkins。

1、创建节点

创建节点之前先将节点服务器添加到known_hosts文件中。可以直接通过ssh命令在部署jenkins的服务器中登陆节点服务器,登陆成功就会将节点服务器添加到known_hosts文件中。

-- 生成ssh秘钥
ssh-keygen -t rsa

如果没有进行上一步,会报如下错误新建节点添加凭据,这里用户名和密码填写节点服务器的新建节点成功后,点击节点启动,成功后如下图所示

2、选择节点

任务构建可以指定节点进行,具体操作步骤如下图所示这里的值可以是节点的名称,也可以是节点标签,一个标签对应1个或多个节点。节点的标签在节点创建的时候设置

总结

总体上来说,安装Jenkins部署环境还是比较简单的,在安装过程中遇到一些问题也能找到解决方案。通过实际操作,进行Jenkins安装,更加全面的认识和深入了解Jenkins的使用,也对自动化构建有了进一步的掌握,在后续的工作中,可以在实际项目中进行使用,让其发挥威力,提升工作效率。

资料

Jenkins中文网 :http://www.jenkins.org.cn/
用Jenkins自动化搭建测试环境:https://www.imooc.com/learn/1008

推荐阅读

Intellij IDEA 牛X插件!工作效率提升10倍!

如何保证RocketMQ/RabbitMQ消息数据100%不丢失

【一个人看起来在进行逻辑思考,但其实大多数时间他只是在进行记忆检索。】

See you next good day~

搭建Jenkins实现自动化部署环境相关推荐

  1. Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境

    分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程 本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索.第一.二部分只是对 ...

  2. 手把手教你搭建Jenkins实现自动化部署Jar

    centeros7 安装配置环境jdk1.8 1.先卸载centeros自带jdk rpm -qa | grep openjdk 查询出来的自带的openjdk 2.删除 rpm -e --nodep ...

  3. Docker搭建jenkins(Vue自动化部署)

    前言 需要提前准备的条件 Docker环境 Docker官网:https://hub.docker.com/u/library 一.jenkins镜像 # 查询镜像 docker search jen ...

  4. K8S搭建自动化部署环境(三)Jenkins下载、安装和启动

    各位大佬,前文如下: K8S搭建自动化部署环境(一)安装Kubernetes K8S搭建自动化部署环境(二)安装K8S管理工具Kuboard V3 一.jenkins 下载 jenkins下载地址:h ...

  5. K8S搭建自动化部署环境(四)Jenkins多分支流水线Blue Ocean的安装和使用

    各位大佬,前文如下: K8S搭建自动化部署环境(一)安装Kubernetes K8S搭建自动化部署环境(二)安装K8S管理工具Kuboard V3 K8S搭建自动化部署环境(三)Jenkins下载.安 ...

  6. springboot 使用Jenkins实现自动化部署

    springboot 使用Jenkins实现自动化部署 简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持 ...

  7. gitlab与jenkins的自动化部署(通过webhook与ansible)

    gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80 jenkins服务器:192.168.1.49:81 ...

  8. Jenkins自动化部署环境搭建

    Jenkins实现流程图 1.1. docker部署jenkins,可避免很多问题 1.2. war包启动 下载war包链接:https://get.jenkins.io/war-stable/ je ...

  9. 这样用Docker 搭建 Jenkins 实现自动部署,你知道吗?

     一.为什么用jenkins 主要是我们现在的项目都是采用手动部署的,每当给项目中新增一个功能就必须执行(打包--测试--上传测试修复的包到指定服务器--部署上线),这个流程操作起来繁杂,不小心就可能 ...

最新文章

  1. OpenStack 实现技术分解 (7) 通用库 — oslo_config
  2. 重构授课班时间安排模块代码
  3. Linux命令之初出茅庐
  4. Objective-C语言的动态性
  5. java url 传值乱码问题_java页面url传值中文乱码怎么办
  6. 在MSP432 LaunchPad上运行MicroPython
  7. Spring4.x(16)--SpringEL-正则表达式
  8. Intellij IDEA基本配置
  9. Gstreamer——搭建RTSP服务器
  10. 机械设计软件编写心得
  11. Atitit  undac网络设备管理法案 (路由器 交换机等)    法案编号USRr101510
  12. svn忽略文件不提交
  13. 74LS138-三人表决电路
  14. 舆情监测系统功能及作用
  15. Node 简介、模块、模板引擎、NPM、文件操作、缓冲区、文件流、网络操作、Express框架
  16. CUDA编译(一)---使用nvcc编译cuda
  17. 字体号数,像素,榜值对应关系
  18. win7计算机文件夹折叠,win7系统折叠组窗口设置不折叠的操作方法
  19. python入门教程pdf免费_python入门教程pdf
  20. 区块链中公有链、联盟链和私链的区别

热门文章

  1. 好玩的网站 可以实时看到任意航班的实时情况 位置 高度
  2. 爱站权重批量查询 如何批量查询爱站权重信息
  3. Linux基础及命令大全(入门级教学基础命令)
  4. Bootstrap导航栏navbar源码分析
  5. 2019胡润全球独角兽榜
  6. web网页设计与开发:旅游酒店网站设计——红色大气的度假酒店预订网站html模板(5页) HTML+CSS+JavaScript
  7. href =“ tel:”和手机号码
  8. 有温度的智慧城市,像生命一样生长
  9. 服务器绑定域名的步骤
  10. process.env.NODE_ENV使用