您当前的位置:首页 > 互联网百科 > 云计算

CI/CD持续部署持续集成Jenkins介绍

时间:2021-04-30 11:42:46  来源:云计算AND容器技术  作者:
CI/CD持续部署持续集成Jenkins介绍

 

在当今互联网行业乃至一些大厂,大部分公司都采用敏捷项目管理模式来管理项目,在敏捷十二条宣言中有一条是这样说:“我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户”,通过这一条我们可以看出,项目的持续集成和持续部署发布对客户来说是非常重要的。

通过网络搜索和查阅相关资料,能够完成CI/CD持续集成持续部署的工具有很多种,最常用的一般是赫赫有名的Jenkins。Jenkins是采用JAVA语言编写支持许多插件,除过基本的功能外其他的扩展功能都可以通过插件的形式来完成,包括集成现在比较火的Docker,Kubernetes,AWS等。

在实际的项目开发过程中,Jenkins的典型工作流如下图:

CI/CD持续部署持续集成Jenkins介绍

 

通过这张图我们可以简单的理解在整个CI/CD的工作流中,数据的流转是:

  1. DBA,Developer,Operations,Tester将代码提交到版本管理工具中,例如:GIT,SVN等;
  2. CI服务器会手动触发或者定时触发去版本管理工具中拉取代码进行编译,打包操作,在这个过程中还可以完成对代码的质量检查,单元测试等;
  3. CI服务器将打包后的二进制文件部署到目标服务器(环境)中,根据CI服务器的配置,如果配置了多个环境,可以将打包后的文件部署到SIT,UAT或者PROD等;

下面我们就通过一个简单的案例来看看Jenkins是如何实现CI/CD持续集成持续部署功能的,具体的环境如下:


步骤一:通过官网下载Jenkins最新安装包

我们找到Jenkins的官网:https://jenkins.io/zh/

CI/CD持续部署持续集成Jenkins介绍

 

通过上图我们可以看到Jenkins支持许多操作系统和环境部署,而且我们还可以通过官网下载到Jenkins的源代码,在这里我们下载最新的二进制文件war包,它可以部署到Tomcat也可以通过命令行的方式启动,我们采用第二种方式命令行的方式部署Jenkins。

步骤二:编写Jenkins启动脚本start_jenkins.sh

#!/bin/bash
​
# Author:xiaobaoqiang
​
JENKINS_LOG=/tmp/jenkins.log
JENKINS_JAR=/root/jenkins.war
PID_FILE=/run/jenkins.pid
​
# start function
function start(){
 # pring message
 echo "Checking jenkins ..."
 # check Jenkins is running or not
 PID=`ps auwx | grep ${JENKINS_JAR} | grep -v grep | awk '{print $2}'`
 if [ $PID ]; then
 echo "Jenkins is Running at PID:$PID, Don't start again."
 exit 0
 else
 echo "Jenkins is not running, will be started."
 fi
​
 # pring message
 echo "Jenkins starting ..."
​
 # start jenkins
 nohup java -jar ${JENKINS_JAR} > ${JENKINS_LOG} 2>&1 &
​
 # start jenkins status
 status=$?
​
 if [[ $status != 0 ]]; then
 echo "Failed to start jenkins, return code: $status. Please check ${JENKINS_LOG} for more information."
 exit $status;
 fi
​
 # sleep
 sleep 2s
​
 # PID
 PID=`ps auwx | grep ${JENKINS_JAR} | grep -v grep | awk '{print $2}'`
​
 if [ ! $PID ]; then
 echo "Start jenkins Failed. Please check ${JENKINS_LOG} for more information."
 else
 echo $PID > ${PID_FILE}
 echo "Jenkins is started at PID:$PID"
 fi
}
​
# stop function
function stop(){
 # pring message
 echo "Jenkins stopping ..."
 # PID
 PID=`ps auwx | grep ${JENKINS_JAR} | grep -v grep | awk '{print $2}'`
​
 if [ ! $PID ]; then
 echo "Jenkins is not running. Please check jenkins is running or not."
 else
 kill -9 $PID
 rm -f ${PID_FILE}
 echo "Jenkins is stopped."
 fi
}
​
# restart function
function restart(){
 stop
 start
}
​
# status function
function status(){
 # pring message
 echo "Checking jenkins ..."
 # PID
 PID=`ps auwx | grep ${JENKINS_JAR} | grep -v grep | awk '{print $2}'`
​
 if [ ! $PID ]; then
 echo "Jenkins is not running. Please check jenkins is running or not."
 else
 echo "Jenkins is started at PID:$PID"
 fi
}
​
case "$1" in
 start )
 echo "************************************************"
 start
 echo "************************************************"
 ;;
 stop )
 echo "************************************************"
 stop
 echo "************************************************"
 ;;
 restart )
 echo "************************************************"
 restart
 echo "************************************************"
 ;;
 status )
 echo "************************************************"
 status
 echo "************************************************"
 ;;
 * )
 echo "************************************************"
 echo "Usage: start_jenkins.sh ( commands ... )"
 echo "commands:"
 echo " start start jenkins"
 echo " stop stop jenkins"
 echo " restart restart jenkins"
 echo " status status jenkins"
 echo "************************************************"
 ;;
esac
exit 0

上面的Jenkins启动脚本包括了Jenkins的启动,停止和重启功能。

我们也可以通过下面一条简单的命令来启动Jenkins:

java -jar jenkins.war

通过这种简单的方式当我们按Ctrl+C或者关闭命令行的时候,Jenkins就会被停止掉。

步骤三:启动Jenins服务

通过上一步骤我们编写的启动脚本启动Jenkins

[root@dev01 ~]# ./start_jenkins.sh start
************************************************
Checking jenkins ...
Jenkins is not running, will be started.
Jenkins starting ...
Jenkins is started at PID:20755
************************************************

查看下Jenkins的启动日志:

十月 27, 2019 11:08:03 上午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@43a00e48: display name [Root WebApplicationContext]; startup date [Sun Oct 27 11:08:03 CST 2019]; root of context hierarchy
十月 27, 2019 11:08:03 上午 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
信息: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@43a00e48]: org.springframework.beans.factory.support.DefaultListableBeanFactory@6de44024
十月 27, 2019 11:08:03 上午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@6de44024: defining beans [filter,legacy]; root of factory hierarchy
十月 27, 2019 11:08:03 上午 jenkins.InitReactorRunner$1 onAttained
信息: Completed initialization
十月 27, 2019 11:08:03 上午 hudson.WebAppMain$3 run
信息: Jenkins is fully up and running

通过日志信息可以看到Jenkins已经完全启动了。

步骤四:登陆Jenkins

我们以管理员root的身份登陆Jenkins,打开
http://localhost:8080/pluginManager/ 可以查看和安装我们需要的插件,对Java语言来说最常用的应该是Maven插件了

CI/CD持续部署持续集成Jenkins介绍

 

可以看到,通过上面简单的步骤一个Jenkins服务我们已经部署成功了,然后我们就可以利用我们的Jenkins服务来部署和发布我们的项目了,达到持续部署持续集成的目的。

参考:

https://jenkins.io/zh/doc/book/installing/

文章如有不妥之处,欢迎指正!谢谢!



Tags:Jenkins   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
第一步、部署环境1、安装nodeJs1、下载nodewget https://nodejs.org/dist/v16.8.0/node-v16.8.0-linux-x64.tar.xz2、解压压缩包xz -d node-v8.11.2-linux-x64.tar.xztar -x...【详细内容】
2021-09-06  Tags: Jenkins  点击:(70)  评论:(0)  加入收藏
前提条件:已成功安装JDK。官网下载地址: https://www.jenkins.io/download 二、安装1、jenkins安装包安装(1)直接双击运行已经下载好的jenkins.msi安装包 (2)点击"运行" (3)点击"Nex...【详细内容】
2021-06-23  Tags: Jenkins  点击:(116)  评论:(0)  加入收藏
目前主流的开发采用的是devops模式(开发、测试、运维一体化)。随着互联网安全要求越来越高,对网络安全就越发变得重要了。传统的测试工程师主要是对功能、接口、性能方面做测试...【详细内容】
2021-06-23  Tags: Jenkins  点击:(112)  评论:(0)  加入收藏
Jenkins 是目前最常用的持续集成工具,拥有近50%的市场份额,他还是很多技术团队的第一个使用的自动化工具。由此可见他的重要性!这份Jenkins宝典从入门介绍到结合Docker+SpringC...【详细内容】
2021-06-09  Tags: Jenkins  点击:(145)  评论:(0)  加入收藏
在当今互联网行业乃至一些大厂,大部分公司都采用敏捷项目管理模式来管理项目,在敏捷十二条宣言中有一条是这样说:“我们的最高目标是,通过尽早和持续地交付有价值的软件来满足...【详细内容】
2021-04-30  Tags: Jenkins  点击:(165)  评论:(0)  加入收藏
以下是详细的步骤1. JDK \Jmeter \ Ant安装:1.1.安装JDK:双击jdk-7u80-windows-x64.exe安装,默认安装到C:\ProgramFiles\Java目录1.2.安装Jmeter:在我的电脑—E盘(建议与...【详细内容】
2021-04-16  Tags: Jenkins  点击:(224)  评论:(0)  加入收藏
在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git实...【详细内容】
2021-03-19  Tags: Jenkins  点击:(259)  评论:(0)  加入收藏
在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作。借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,通...【详细内容】
2021-02-19  Tags: Jenkins  点击:(230)  评论:(0)  加入收藏
Jenkins是一款开源的CI&CD软件, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。JenkinsJenkins基于Java环境,可以部署在windows/Mac OS/linux上,通过其网页...【详细内容】
2020-11-06  Tags: Jenkins  点击:(610)  评论:(0)  加入收藏
相信vue很多人都已经很熟悉了,利用脚手架很容易搭建一个vue项目 但项目多了以后每次部署测试环境就相当麻烦,还容易出错 所以趁这两天不忙,研究一下jenkins,也总算是入门了 jen...【详细内容】
2020-10-17  Tags: Jenkins  点击:(92)  评论:(0)  加入收藏
▌简易百科推荐
作者:阿里集团 阿里云智能事业群 云原生应用平台来源:华章科技 云原生(Cloud Native)的概念,最早是由Pivotal于2015年提出的,但是即使到了2019年上半年,国内对其的关注依然相对有限...【详细内容】
2021-07-19  华章科技    Tags:云原生   点击:(182)  评论:(0)  加入收藏
一、案例概述为了方便对公司办公计算机桌面系统的管理,公司需要搭建一套桌面虚拟化平台。公司运维工程师决定使用Cirtix桌面 虚拟化解决方案。 Citrix XenServer服务器虚拟化...【详细内容】
2021-07-13  虚拟化爱好者    Tags:企业云   点击:(608)  评论:(0)  加入收藏
近日有粉丝问阿里云和华为云的部署区别是啥,其实阿祥没有搭建过阿里云,具体用啥工具部署,部署的步骤和具体方法并不知道(ps:后续如果能找到类似资料,阿祥会给大家分享),所以我这次先...【详细内容】
2021-07-13  信息系统集成Vlog    Tags:阿里云   点击:(136)  评论:(0)  加入收藏
人类社会可以划分为三个阶段:第一次浪潮为农业阶段,从约1万年前开始;第二阶段为工业阶段,从17世纪末开始;第三阶段为信息化阶段,从20世纪50年代后期开始。 --托夫勒,《第三次浪潮...【详细内容】
2021-06-02  云技术    Tags:云计算   点击:(95)  评论:(0)  加入收藏
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二...【详细内容】
2021-05-14    全国产经平台  Tags:云计算开发   点击:(128)  评论:(0)  加入收藏
在当今互联网行业乃至一些大厂,大部分公司都采用敏捷项目管理模式来管理项目,在敏捷十二条宣言中有一条是这样说:“我们的最高目标是,通过尽早和持续地交付有价值的软件来满足...【详细内容】
2021-04-30    云计算AND容器技术  Tags:Jenkins   点击:(165)  评论:(0)  加入收藏
云服务所谓的云服务,云服务可以将企业所需的软硬件、资料都放到网络上,在任何时间、地点,使用不同的IT设备互相连接,实现数据存取、运算等目的。 云服务是一种按需服务1.云服务(C...【详细内容】
2021-04-28  德姐姐科普  今日头条  Tags:云服务   点击:(155)  评论:(0)  加入收藏
云计算是一种基于互联网的计算新方式,使得个人和企业用户以按需即取、易扩展的方式的获取计算和服务。本文介绍了云计算的基本概念、发展历程及发展现状,总结了云计算的关键技...【详细内容】
2021-04-28  云计算那点事    Tags:云计算   点击:(109)  评论:(0)  加入收藏
图片来源@视觉中国文 | 波波夫上世纪六十年代,科学家John McCarthy在斯坦福大学提出了“从任意地点通过网络访问计算机程序”的设想时,台下听众的反应,可能和今天在推特上看马...【详细内容】
2021-04-16    钛媒体APP  Tags:云计算   点击:(102)  评论:(0)  加入收藏
由于边缘计算能让用户在靠近物或数据源头的一侧处理工作负载,极大地提升了在云端的处理效率,因此备受用户青睐。  根据MarketsandMarkets数据分析显示:到2022年,边缘计算市场...【详细内容】
2021-04-07    IT168企业级  Tags:边缘计算   点击:(139)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条