当前位置: 首页 > news >正文

jenkins流水线项目部署

jenkins

什么是 Jenkins?

Jenkins 是一个开源的、用 Java 编写的持续集成持续交付工具。你可以把它想象成一个高度可定制的“软件工厂自动化机器人”。

它的核心功能是自动化那些繁琐且重复的软件开发流程,例如:

1.编译代码

2.运行自动化测试

3.打包成可部署的软件

4.部署到测试或生产环境

主要特点和优势

开源免费:拥有庞大的社区和丰富的资源。

插件生态极其丰富:这是 Jenkins 最强大的地方。有超过 1500 个插件,可以无缝集成几乎所有主流开发工具,如 Git、Docker、Maven、Kubernetes、JIRA、Slack 等。

高度可配置:可以通过 Web 界面轻松配置,也支持使用代码(Jenkinsfile)来定义复杂的构建流程,这种方式称为 “Pipeline as Code”。

跨平台:由于基于 Java,它可以在所有主流操作系统上运行。

分布式构建:可以在多台机器上分布构建任务,加快构建速度。

Maven介绍

Maven 就是构建 java 里面的一个 war 包的;

Maven 项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具;

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目;

由于Maven的面向项目的方法,许多Apache Jakarta 项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长

SVN介绍

SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

jenkins工作原理

将源代码从SVN/Git版本控制系统中拷贝一份到本地,然后根据设置的脚本进行build(构建);整个系统的关键就是build脚本,build脚本告诉Jenkins在一次集成中需要执行的任务。

CI/CD是什么

CI 持续集成(全称:Continuous integration),中文意思是持续集成是一种软件开发时间;持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试;根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

CD持续交付

CD 持续交付(全称:Continuous Delivery), 中文意思是:持续交付 是在 CI持续集成 的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中;比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试,如果代码没有问题,可以继续手动部署到生产环境

CD持续部署

CD 持续部署(全称:Continuous Deployment),是 CI持续集成 ,CD持续交付的延伸。自动将交付的应用部署到生产环境。能及时收到用户反馈,降低部署的风险;

持续部署是持续交付的下一步,在持续交付的基础上,由开发人员或运维人员自助式的定期向生产环境部署稳定的构建版本,持续部署的目标是代码在任何时刻都是可部署的,并可自动进入到生产环境

总结:持续交付是手动部署到生产环境,持续部署是自动部署到生产环境
实验:

需要两台设备

rhel9:192.168.100.100部署tomcat,jenkins
centos7:192.168.100.30部署tomcat用作测试

两台设备都要关闭防火墙,selinux,做本地时钟同步

rhel9

配置rhel9的yum仓库

[root@server ~]# vim /etc/yum.repos.d/server.repo [aa]
name=aa1
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
enabled=1
gpgcheck=0[bb]
name=bb1
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0

安装Javajdk环境

[root@server ~]# yum -y install java-11-openjdk

安装lrzsz用于xshell传输软件包

[root@server ~]# yum install lrzsz

部署tomcat

[root@server ~]# ls
公共  图片  音乐             apache-tomcat-9.0.67.tar.gz
模板  文档  桌面             rhel-9.2-x86_64-dvd.iso
视频  下载  anaconda-ks.cfg[root@server ~]# tar -xzvf apache-tomcat-9.0.67.tar.gz -C /usr/local/
[root@server ~]# cd /usr/local/
[root@server local]# ln -s apache-tomcat-9.0.67/ tomcat
[root@server local]# cd tomcat/
[root@server tomcat]# bin/catalina.sh start

查看8080端口

在这里插入图片描述

tomcat部署完成

部署jenkins

首先停止tomcat

[root@server tomcat]# bin/catalina.sh stop

下载jenkins 2.462.1版本到/usr/local/tomcat/webapps/目录下

[root@server webapps]# ls
docs  examples  host-manager  jenkins.war  manager  ROOT

启动tomcat

[root@server tomcat]# bin/catalina.sh start

查看8080/jenkins页面,设置用户和密码

在这里插入图片描述

在这里插入图片描述

安装完成后设置国内源

在这里插入图片描述

选择manage jenkins

在这里插入图片描述

选择plugins

在这里插入图片描述

将url替换成https://mirrors.huaweicloud.com/jenkins/updates/update-center.json

在jenkins主机上生成密钥传给client主机

[root@server ~]# ssh-keygen   #全部回车
[root@server ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.30
[root@server ~]# ssh root@192.168.100.30
Last login: Tue Oct 21 18:28:29 2025 from 192.168.100.1
[root@client ~]# exit
logout
Connection to 192.168.100.30 closed.
[root@server ~]#
centos7

首先需要卸载自带的jdk环境

[root@client ~]# rpm -qa | grep java	
[root@client ~]# rpm -e java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64 --nodeps
[root@client ~]# rpm -e java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64 --nodeps

配置yum仓库

[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]#  rm -rf *
[root@client yum.repos.d]#  wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@client yum.repos.d]# yum install epel-release -y

安装jdk环境

[root@client yum.repos.d]# yum -y install java-11-openjdk

部署tomcat

[root@client yum.repos.d]# cd /usr/local/
[root@client local]# ls
apache-tomcat-9.0.67  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@client local]# ln -s apache-tomcat-9.0.67/ tomcat
[root@client local]# cd tomcat/
[root@client tomcat]# bin/catalina.sh start

查看8080页面

在这里插入图片描述


在jenkins中创建流水线任务

在jenkins主机中安装git和maven,maven需要与jdk对应

[root@server ~]# yum -y install git[root@server ~]# yum search maven
正在更新 Subscription Management 软件仓库。
无法读取客户身份本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。上次元数据过期检查:1:07:20 前,执行于 2025年10月21日 星期二 18时19分30秒。
====================== 名称 精准匹配:maven =======================
maven.noarch : Java project management and project comprehension: tool
==================== 名称 和 概况 匹配:maven =====================
maven-lib.noarch : Core part of Maven
maven-openjdk11.noarch : OpenJDK 11 binding for Maven
maven-openjdk17.noarch : OpenJDK 17 binding for Maven
maven-openjdk21.noarch : OpenJDK 21 binding for Maven
maven-openjdk8.noarch : OpenJDK 8 binding for Maven
maven-resolver.noarch : Apache Maven Artifact Resolver library
maven-shared-utils.noarch : Maven shared utility classes
======================== 名称 匹配:maven =========================
maven-wagon.noarch : Tools to manage artifacts and deployment
安装jkd11
[root@server ~]# yum install maven-openjdk11.noarch -y
方法1:使用脚本

在这里插入图片描述

新建ltem

在这里插入图片描述

选择流水线pipeline

在这里插入图片描述

选择脚本,符号使用英语符号,然后保存

pipeline { 
agent anystages { 
stage('pull code') { 
steps { 
git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
}
}
}
}

在流水线语法这里选择git

在这里插入图片描述

生成流水线脚本

在这里插入图片描述

加载新的插件

在这里插入图片描述

选择流水线视图然后安装,安装完成后重启jenkins

重启完成后回到首页,点击之前创建的流水线,buildnow立即创建

在这里插入图片描述

可以看到创建流程以及日志

在这里插入图片描述

在构建历史里查看,构建日志记录在

/root/.jenkins/workspace/test1

添加第二部分脚本并执行

pipeline { 
agent anystages { 
stage('pull code') { 
steps { 
git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
}
}
stage('package') { 
steps { 
sh """ 
mvn clean
mvn package
"""
}
}
}
}

第二次构建时间会比较长,是为了安装软件包,生成站点,站点在/root/.jenkins/workspace/test1/target/目录下,通过日志文件可以看到

在这里插入图片描述

第三次构建的时候,就是需要把这个文件使用scp的方式发送给client的tomcat中

[root@server ~]# cd /root/.jenkins/workspace/test1/target/
[root@server target]# ls
dependency                 java-tomcat-maven-example.war
java-tomcat-maven-example  maven-archiver

需要把java-tomcat-maven-example.war发送给client

pipeline { 
agent anystages { 
stage('pull code') { 
steps { 
git 'https://github.com/devopsbyhari/JenkinsTomcatExample.git'
}
}
stage('package') { 
steps { 
sh """ 
mvn clean
mvn package
"""
}
}stage('deploy') { 
steps { sh """                scp target/java-tomcat-maven-example.war root@192.168.100.30:/usr/local/tomcat/webapps/ssh root@192.168.100.30 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'"""}
}
}
}

在这里插入图片描述

在这里插入图片描述

去client中查看

[root@client webapps]# ls
docs  examples  host-manager  java-tomcat-maven-example  java-tomcat-maven-example.war  manager  ROOT

在这里插入图片描述

能够访问该页面说明流水线项目部署成功

方法二:

再建一个test2的站点

在这里插入图片描述

添加3个字符串当作变量使用,在Pipeline脚本中,但是变量名中通常不能包含特殊字符,比如减号-,因此图片中所有-换成_下划线

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

脚本

pipeline { 
agent anystages { 
stage('pull code') { 
steps { 
git "${giturl}"
}
}
stage('package') { 
steps { 
sh """ 
mvn clean
mvn package
"""
}
}stage('deploy') { 
steps { sh """                scp target/${maven_package}.war root@${client_ip}:${tomcat_path}/webapps/ssh root@${client_ip} '${tomcat_path}/bin/catalina.sh stop && ${tomcat_path}/bin/catalina.sh start'"""}
}
}
}

在这里插入图片描述

在这里插入图片描述
再次访问192.168.100.30:8080/java-tomcat-maven-example/

如果还是之前的界面则说明成功

http://www.dtcms.com/a/511623.html

相关文章:

  • 网口学习理解
  • 企业网站 阿里云招聘网站开发
  • 证书兼职的人才网站高明网站设计
  • 用c语言写一个nes游戏模拟器
  • RTCM消息
  • 网络营销从网站建设开始搜索引擎优化的主要特征
  • 2025 年中国医疗行业 OA 办公系统使用情况调研报告
  • 亚信安全连续九年登顶身份和访问管理软件第一,终端安全领跑
  • 中石油工程建设公司网站二手书网站的建设规模
  • 使用 Go + govcl 实现 Windows 资源管理器快捷方式管理器
  • golang/java每日3题
  • 智能数字毫秒表的应用场景介绍,数字毫秒仪 智能毫秒表
  • 【设计模式】工厂模式(Factory)
  • 峰峰专业做网站珠海集团网站建设
  • vue实现打印PDF文档
  • 使用 Python 将 PDF 转成 Excel:高效数据提取的自动化之道
  • 神经网络初次学习收获
  • clickhouse学习笔记(一)基础概念与架构
  • 做网站的业务分析wordpress 国外免费主题
  • [人工智能-大模型-34]:模型层技术 - 通俗易懂的语言阐述Transformer架构
  • 推广你公司网站wordpress静态路由
  • 2017年下半年试题三:论无服务器架构及其应用
  • 内置线程池的核心参数分析配置
  • vim及其模式的操作
  • ESP32学习笔记(基于IDF):SmartConfig一键配网
  • 黑马商城day4-微服务02
  • 哪些网站可以找到做海报的素材浙江建设厅考试成绩查询
  • Python定时爬取新闻网站头条:从零到一的自动化实践
  • 纯CSS实现多种背景图案:渐变条纹、蓝图网格、波点与棋盘效果全解析(附 Sass Mixin 封装)
  • Linux相关概念和易错知识点(48)(epoll的底层原理、epoll的工作模式、反应堆模式)