草庐IT

【Linux】部署Jenkins(简介及详细教程【war包部署】)

A-刘晨阳 2023-04-18 原文


文章目录

Jenkins简介

  随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好地协同工作以确保 软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更 早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成 本就会显著下降;持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩 短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。所以,当 配置完 Jenkins 持续集成持续交付环境后,就可以把发布的任务交给集成服务器去打理了。 使用 Maven(Ant) 等来实现 Java 项目自动化构建发布部署。这些工具可以帮助在构建过程 中实现自动化发布、回滚等动作。

  开发人员写好代码,想要代码上线必须要找运维人员,等待运维部门上线,上线的概念就是将老的代码打包备份,删除 将新的代码上传。CICD环境可以将开发 集成 测试 部署合并一起,提高工作的效率

  Jenkins 是一个用 Java 编写的开源的持续集成工具。在与 Oracle 发生争执后,项目从 Hudson 项目独立。

  JenKins是一个高度集成化的工具,底层是由Java编写,先安装JDK才可以安装JenKins;
  可以将JenKins运行在Tomcat环境中也可以独立安装


官方网站:https://jenkins.io/


  Jenkins 提供了软件开发的持续集成服务。它运行在 Servlet 容器中(Tomcat)。它支持软件配置管理(SCM)工具(包括 AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase 和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows 批处理命令。Jenkins 的主要开发者是川口耕介。Jenkins 是在 MIT 许可证下发布的自由软件。

  Jenkins的官网提供 Jenkins.war放在tomcat的webapps目录下会自动解压,会生成一个jenkins的目录。
  Jenkins也提供rpm格式的软件包

  Jenkins 能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能, 还能用图表的形式,形象地展示项目构建的趋势和稳定性。

Jenkins 包含以下几个特点:

  • 易安装:仅仅一个 jenkins.war,从官网下载该文件后,直接运行,无需额外的安装, 更无需安装数据库;
  • 易配置:提供友好的 GUI 配置界面;
  • 变更支持:Jenkins 能从代码仓库(SVN /Git)中获取并产生代码更新列表,并输出到编 译输出信息中;
  • 支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 Web 页面的链接地址都 是永久链接地址,可以在各种文档中直接使用该链接;
  • 集成 E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时收取集成结果(构建一 次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
  • JUnit/TestNG 测试报告:也就是用以图表等形式提供详细的测试报表功能;
  • 支持分布式构建:Jenkins 可以把集成构建等工作分发到多台计算机中完成;
  • 文件指纹信息:Jenkins 会保存构建集成所产生的 jars 文件、集成构建使用了哪个版;
  • 支持第三方插件:Jenkins 支持第三方插件,这使得 Jenkins 功能变得越来越强大。

持续集成(CI)

CI 有一个概念 持续集成
  持续集成(英语:Continuous integration,缩写为 CI),一种软件工程流程,将所有工程 师对于软件的工作复本,每天集成数次到共用主线(mainline)上。
   这个名称最早由葛来迪·布区(Grady Booch)在他的布区方法中提出,但是他并没有 提到要每天集成数次。之后成为极限编程(extreme programming,缩写为 XP)的一部分。 在测试驱动开发(TDD)的作法中,通常还会搭配自动单元测试

  CI 持续集成 完全自动的集成,效率提高
  分支的概念:工作主要与dev开发分支,带稳定后再由master合并,研发的代码要先测试,测试没有问题之后才会合并到master分支,这样我们的效率会很低

  持续集成的提出,主要是为了解决软件进行系统集成时面临的各项问题,极限编程称这些问题为集成地狱(integration hell)。

  CI服务器就是我们的Jenkins从仓库里面拉取代码,进入BUILD构建成war ,然后测试把结果返回给开发,开发人员会把代码提交到仓库

  持续集成主要是强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据 测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。简单来讲就是:频繁地 (一天多次)将代码集成到主干。

持续集成的效益

  • 及早发现集成错误且由于修订的内容较小所以易于追踪,这可以节省项目的时间与成本。
  • 避免发布日期的前一分钟发生混乱,当每个人都会尝试为他们所造成的那一点点不兼容 的版本做检查。
  • 当单元测试失败或发生错误,若开发人员需要在不除错的情况下还原代码库到一个没有 问题的状态,只需要放弃一小部分的更改 (因为集成的次数频繁)。
  • 让 “最新” 的程序可保持可用的状态供测试、展示或发布用。
  • 频繁的提交代码会促使开发人员创建模块化,低复杂性的代码。
  • 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难 度变大,甚至难以集成

持续集成的作用

  • 保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
  • 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过 程以节省时间、费用和工作量。

持续集成的特点

  • 是一个自动化的、周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
  • 需要有专门的集成服务器来执行集成构建;
  • 需要有代码托管工具支持;

持续交付(CD)

CD 有两个概念 持续交付和持续部署

  持续交付(英语:Continuous delivery,缩写为 CD),是一种软件工程手法,让软件产品 的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。 它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发 的成本与时间,减少风险。

  开发人员提交代码到CI服务器,会对提交的代码进行测试、构建、反馈,会把整体代码往测试环境里面部署,进行统一的测试、部署,部署的话是手工的部署;
  CD会将整个部署环节改为AUTO 就是整个环节都是自动的

  持续交付是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

持续部署(CD)

  持续部署(英语:Continuous Deployment,缩写为 CD),是持续交付的下一步,指的是 代码通过评审以后,自动部署到生产环境。
  有时候,持续部署也与持续交付混淆。持续部署意味着所有的变更都会被自动部署到生 产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可 以选择不部署。如果要实施持续部署,必须先实施持续交付。

持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。

Maven介绍

  Maven 项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
  Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
  由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

  Maven 这个单词来自于意第绪语(犹太语),意为知识的积累,最初在 Jakata Turbine 项目中用来简化构建过程。当时有一些项目(有各自 Ant build 文件),仅有细微的差别, 而 JAR 文件都由 CVS 来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享 JARs。

  Maven是一个Java的代码构建打包的工具,如果是Java类的项目就必须要用到Maven。

部署Jenkins

环境配置:

#关闭防火墙
systemctl stop firewalld

#关闭沙盒
setenforce 0

#下载需要的命令
yum -y install lrzsz unzip

jdk安装:

因为jdk版本和对应的Jenkins的版本的因素,建议使用我的这个jdk;

jdk包可选择:
jdk-18.0.2.1–Jenkins专用:https://download.csdn.net/download/liu_chen_yang/86725410下载;

也可以选择百度网盘下载jdk安装包和jenkins安装包:
链接:https://pan.baidu.com/s/135MSMdS97kR_fJKG8AF-GA
提取码:p3x7

#下载完成之后将jdk包传进服务器
#解压jdk包
unzip jdk-18.0.2.1.zip

#并将解压的包移动到/usr/local/目录下
mv jdk-18.0.2.1 /usr/local/

#移动完成之后给java添加权限
cd /usr/local/jdk-18.0.2.1/bin/
chmod 775 *

#完成之后配置环境变量
vim /etc/profile

export JAVA_HOME=/usr/local/jdk-18.0.2.1
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin


#添加完环境变量使其生效
source /etc/profile

#查看java版本
java -version

java version "18.0.2.1" 2022-08-18
Java(TM) SE Runtime Environment (build 18.0.2.1+1-1)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing

这样jdk就安装完成了;完成之后我们安装开发工具包;

yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

等待安装完成即可;

Jenkins安装:
jenkins可以在官网下载最新的war包,也可以使用百度网盘的war包,用哪个都可以,用这个安装成功有个提示会问你要不要更新最新版本,像更新到时候更新就好了;

网盘下载:2.370版本
链接:https://pan.baidu.com/s/135MSMdS97kR_fJKG8AF-GA
提取码:p3x7

官网war包下载地址:https://mirrors.jenkins-ci.org/war/
可选择下载任意版本包;


上述下载安装包任选其一即可;

#下载完成之后上传到服务器中;
#在/usr/local目录下创建一个jenkins目录
mkdir /usr/local/jenkins

#将上传的包移动到/usr/local/jenkins目录
mv jenkins.war /usr/local/jenkins

完成之后可以手动直接启动,也可以写个脚本启动

手动启动:

–httpPort指定访问端口

java -jar jenkins.war --httpPort=8080 --enable-future-java & 

手动启动每次启动会有点麻烦;推荐使用脚本启动;

脚本启动:

vim startjk.sh

#!/bin/bash
java -jar /usr/local/jenkins/jenkins.war --httpPort=8080 --enable-future-java &2> jenkins.log


顺便写了个关闭Jenkins脚本;
脚本关闭:

vim stopjk.sh

#!/bin/bash
ps -ef |grep -v grep | grep jenkins | awk '{print $2}' | xargs kill -s 9 >/dev/null 2>&1

重启脚本:

vim restart.sh

#!/bin/bash
sh /usr/local/jenkins/stopjk.sh
echo "jenkins关闭成功"
sleep 3;
sh /usr/local/jenkins/startjk.sh
echo "jenkins启动成功"
echo "---------------------------"
echo "jenkins重启成功"

页面访问操作

启动完成之后,页面访问;ip:端口
端口可自行设置

输入管理员密码;管理员密码在xshell中启动的时候看;

完成之后点击继续即可;
到这个页面选择安装推荐的插件


注意下面还有一个邮箱,填完保存并完成即可;

这个就不用看了,直接继续保存并完成;

已就绪,直接开始使用;

看到这个界面就已经进入了;

如果需要更新最新版本,可以点击图片上的位置更新即可;也可以下载最新的war包;下载这块是直接下载最新的war包;或自动升级会跳转直接升级


到此部署就完成了;

有关【Linux】部署Jenkins(简介及详细教程【war包部署】)的更多相关文章

  1. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  2. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  5. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  6. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  7. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  8. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  9. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  10. Ruby,使用包含 TK GUI 的 ocra 部署一个 exe - 2

    Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答

随机推荐