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

Jenkins---01

什么是敏捷开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开

发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、

可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行

的小项目,并分别完成,在此过程中软件一直处于可使用状态。

什么是持续集成(CI

因为开发部门同时维护多个版本,多个版本的发布,测试需要大量人力,所以要有一个专业

的持续集成工具来管理持续重复的工作。

一. 持续集成工具(CI)

1.1 Jenkins Hudson

1) Jenkins 是一个持续集成(CI)工具。它可以持续编译,运行你的代码;运行单元测试(UT)

或集成测试;将运行结果发送至邮件,或展示成报告。

2) Jenkins 起源于 Hudson。Hudson 在商业软件的路上继续前行,而 Jenkins 则作为开源软

件,从 hudson 分支出来。 因此现在的 jenkins 和 hudson 非常类似,但是随着二者各自的发

展,已经有了一些不同。

1.2 技术组合

Jenkins 可以整合 GitHub 或 Subversion Husband 也可以整合 GitHub 或 Subversion 二者

既然是同源的工具软件,操作和指导思想就是接近的

1.3 部署方式对比

JavaEE 项目部署方式对比

手动部署

git ->checkout-> war -> 部署

自动化部署

“自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员

使用的马上就是最新的应用程序。

搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。 对于程

序员的日常开发来说不会造成任何额外负担——自己把代码提交上去之后,服务器上运行的马

上就是最新版本——一切都发生在无形中。

下面我们讲带领大家一步一步搭建整套持续集成环境,这个操作过程只需要细心认 真即

可,没有任何难度。但是需要优秀的你具备以下前置知识:

Linux基本操作命令和VIM编辑器使用

Maven的项目构建管理

GitHub或SVN使用

二. 环境准备

1. jdk 17

2. tomcat

3. Jenkins.war

 2.1安装jdk

2.1.1 通过yum安装

自行查询安装即可

2.1.2 tar 包安装

 这里我们使用的jdk安装方式是通过准备好的tar包进行安装(可私我)

将准备好的tar包上传到我们虚拟机准备好的位置

解压tar包 

配置环境变量

打开配置文件

vim /etc/profile

\

修改配置文件

export JAVA_HOME=/opt/jdk/jdk-17.0.12
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH 

生效环境

source /etc/profile

查看版本

java -version

2.2 安装tomcat 

2.2.1 安装tomcat

将tomcat jar包上传 解压jar包即可

2.2.2 启动tomcat

sh apache-tomcat-10.1.30/bin/startup.sh

2.2.3 访问测试 

2.3 上传文件

使用git将想要上传的项目上传到gitee里面 具体的如何下载配置git 和 gitee注册 请自行准备

这里我是用的是目前最新版本的git

三. 安装jenkins

3.1 下载jenkins.war

Jenkins 的安装和设置icon-default.png?t=O83Ahttps://www.jenkins.io/zh/download/

将下载好的war包放到tomcat安装目录的 wabapps里面

访问页面

Tomcat路径下的/jenkis

自己的虚拟机ip地址

192.168.5.69:8080/jenkins

之后在虚拟机中访问页面中给到的配置文件位置复制密码进行登录

登录之后 按照下方图片进行使用 

3.2 安装git

3.2.1 命令安装

命令

 yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

3.2.2 tar包安装

解压tar包

tar -zxvf git-2.19.0.tar.gz 

进入git目录并安装

mkke prefix=/usr/java/git all

如果报错 

执行命令

安装 Expat 库 成功则不需要

yum install expat-devel 

 继续执行命令

make prefix=/usr/java/git install

配置环境变量

#打开配置文件

vim /etc/profile

#添加下方内容

export GIT_HOME=/usr/java/git

export PATH=$GIT_HOME/bin:$PATH

到此git就安装成功了 

3.3 安装maven

3.3.1 上传 并解压 tar包

 配置环境变量

#打开配置文件

vim /etc/profile

#添加下方内容

export MAVEN_HOME=/opt/jdk/apache-maven-3.8.8

export PATH=$MAVEN_HOME/bin:$PATH

#配置完之后记得重启环境服务

source /etc/profile

修改配置文件settings.xm

 找到配置文件 

配置阿里镜像 

可以使用自己电脑安装过的maven中的阿里镜像

<mirror>

<id>alimaven</id>

<name>aliyun maven</name>

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

<mirrorOf>central</mirrorOf>

</mirror>

找到虚拟机的配置文件 将下方这个位置的镜像改为虚拟机的 

下载插件w

mvn help:system

 

四. 使用Jenkins

4.1 允许用户注册

4.2 配置全局工具

配置 git maven

1. 配置
2. 配置jdk

往下扒拉 

3. 配置maven

继续扒拉 

4. 安装配置 git 
 安装git的插件

 查看 git 的可执行程序

whereis git

 

 配置git 

还进入上面配置的地方 这个时候就下方就可以添加git的配置了6

5. 安装maven插件

4.3 创建任务

注意 这里的配置需要准备好gett上传路径

之后再虚拟机里创建创建目录

#创建目录

mkdir /usr/java/test/ 

#进入目录之后创建sh文件

touch

 打卡配置文件 将下方配置信息复制到里面 修改为自己的ip地址即可

#! /bin/bash
echo "部署的目录和项目名称"
DIR="/usr/java/project"
projectName="demo"
echo "待部署的应用服务器"
server_ips="192.168.5.69"
#所有的参数列表
for server_ip in ${server_ips[@]}
do
echo "进行备份操作"
mkdir -p $DIR/backup/${projectName}if [ -f "$DIR/${projectName}/${projectName}.jar" ];thenmv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jarfi
echo "拷贝jar包到目标服务器的目录下"
cp ${WORKSPACE}/target/*.jar $DIR/${projectName}/${projectName}.jarecho "目标服务器:$DIR/${projectName}/${projectName}.jar"echo "连接进行发布操作"
#mv /usr/java/test/demo.jar $DIR/backup/${projectName}/${projectName}.jar
echo "开始关闭jar"
l=`ps -ef|grep demo.jar|grep -v grep|awk '{print $2}'`
for i in $l
dokill -9 $i
done
sleep 5s
echo "启动jar"
nohup java -jar $DIR/${projectName}/${projectName}.jar --server.port=9999 > release_out.log 2>&1 &start_ok=false
done

相关文章:

Jenkins---01

什么是敏捷开发 敏捷开发以用户的需求进化为核心&#xff0c;采用迭代、循序渐进的方法进行软件开发。在敏捷开 发中&#xff0c;软件项目在构建初期被切分成多个子项目&#xff0c;各个子项目的成果都经过测试&#xff0c;具备可视、 可集成和可运行使用的特征。换言之&…...

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1&#xff08;组合数学&#xff09;解题思路2&#xff08;暴力枚举&#xff09; 2.小球反弹做题思路 3.好数算法思路&#xff08;暴力解法&#xff09;---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…...

线程 vs 虚拟线程:深入理解及区别

Java 提供了两种线程机制&#xff1a;普通线程&#xff08;平台线程&#xff09;和 虚拟线程。普通线程是 Java 中经典的并发处理方式&#xff0c;而虚拟线程是随着 Java 21 引入的新特性&#xff0c;旨在提升并发性能和开发体验。本文将详细探讨它们的区别&#xff0c;并帮助你…...

【WEB应用安全测试指南–蓝队安全测试2】--超详细-可直接进行实战!!!亲测-可进行安全及渗透测试

安全基础理论入门知识参考上一篇《WEB应用安全测试指南蓝队安全测试1》 WEB应用安全测试指南2 一、文件 I/O 类1.1、任意文件上传1.2、任意文件下载1.3、文件包含 二、接口安全类2.1、短信炸弹2.2、邮件炸弹2.3、短信内容可控2.4、邮件内容可控 三、逻辑流程类3.1、越权3.2、未…...

使用HTML、CSS和JavaScript创建滚动弹幕效果

使用HTML、CSS和JavaScript创建滚动弹幕效果 在现代网页设计中&#xff0c;滚动文本是一种常见的动态效果&#xff0c;可以吸引用户的注意力并增强交互体验。在这篇博客文章中&#xff0c;我们将详细介绍如何使用HTML、CSS和JavaScript实现滚动文本效果。 效果 步骤1&#xf…...

【C语言】--数组

&#x1f60a;个人主页: 起名字真南 &#x1f60b;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 数组的概念2 一维数组的创建和初始化2.2 数组的初始化2.3 数组类型 3 一维数组的使用3.1 数组下标3.2 数组的输入 4 一维数组在内存中的存储5 sizeof计算数组中的元素6 二维…...

面向B2B市场的Spring Boot医疗病历系统开发

第1章绪论 计算机已经从科研院所&#xff0c;大中型企业&#xff0c;走进了平常百姓家&#xff0c;Internet遍及世界各地&#xff0c;在网上能够用计算机进行文字草拟、修改、打印清样、文件登陆、检索、综合统计、分类、数据库管理等&#xff0c;用科学的方法将无序的信息进行…...

闭着眼学机器学习——支持向量机分类

引言&#xff1a; 在正文开始之前&#xff0c;首先给大家介绍一个不错的人工智能学习教程&#xff1a;https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程&#xff0c;感兴趣的读者可以自行查阅。 1. 算法介绍 支持向量机(Support Vector Mach…...

今日指数项目day8实战权限管理器(上)

3.权限管理器 3.1 权限列表展示功能 1&#xff09;原型效果 2&#xff09;接口说明 功能描述&#xff1a; 查询所有权限集合 服务路径&#xff1a; /api/permissions 服务方法&#xff1a;Get 请求参数&#xff1a;无响应数据格式: {"code": 1,"data":…...

《机器学习与数据挖掘综合实践》实训课程教学解决方案

一、引言 随着信息技术的飞速发展&#xff0c;人工智能已成为推动社会进步的重要力量。作为人工智能的核心技术之一&#xff0c;机器学习与数据挖掘在各行各业的应用日益广泛。本方案旨在通过系统的理论教学、丰富的实践案例和先进的实训平台&#xff0c;帮助学生掌握机器学习…...

linux中软连接和硬链接的区别

定义与概念 硬链接&#xff08;Hard Link&#xff09;&#xff1a;硬链接是文件系统中的一个概念&#xff0c;它直接指向文件系统中的物理数据块。可以把硬链接看作是原始文件的一个别名&#xff0c;它们共享相同的inode&#xff08;索引节点&#xff09;编号。在Linux文件系统…...

#Swift 对比 Static 在Swift 和 OC中的用法

在 Objective-C 和 Swift 中&#xff0c;static 关键字都用于定义类型级别的成员&#xff0c;但它们的用法和行为在两个语言中有所不同。让我们来详细对比一下 Objective-C 和 Swift 中 static 的使用方式和特性。 1. Objective-C 中的 static 在 Objective-C 中&#xff0c;…...

yakit使用教程(三,端口探测和指纹扫描)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言&#xff1a; 前文链接&#xff1a;yakit下载安装教程。 1.端口扫描的作用。 对目标端口进行扫描可以知道目标服务器开启了什么服务&#xff0c;以便于针对其所存在的服务展开…...

一维数组的引用

#define SIZE 5 int main(void) { int i 0; int arr[SIZE] { 86,85,85,896,45 };//同理五个数据只是偶然&#xff0c;可能会更多 //输入 for (i 0;i < SIZE;i) { printf("请输入你的第%d个值&#xff1a;",i1); scanf_s(&…...

Vue3 watch 监视属性

作用&#xff1a;监视数据的变化&#xff08;和Vue2中的watch作用一致&#xff09;特点&#xff1a;Vue3中的watch只能监视以下四种数据&#xff1a; ref定义的数据。reactive定义的数据。函数返回一个值&#xff08;getter函数&#xff09;。一个包含上述内容的数组。 我们在V…...

大数据-158 Apache Kylin 安装配置详解 集群模式启动

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

PHP商会招商项目系统一站式服务助力企业腾飞

商会招商项目系统——一站式服务&#xff0c;助力企业腾飞 &#x1f680;&#x1f4bc; &#x1f680; 开篇&#xff1a;企业成长的加速器&#xff0c;商会招商项目系统来袭 在竞争激烈的市场环境中&#xff0c;企业如何快速找到适合自己的发展路径&#xff0c;实现腾飞&…...

pnpm 和 npm

pnpm 和 npm 是 JavaScript 生态系统中常用的包管理工具&#xff0c;它们各自有不同的特性和优缺点。下面是这两者的详细比较&#xff1a; 1. 基本概念 npm (Node Package Manager)&#xff1a; 是 Node.js 的默认包管理器&#xff0c;提供安装、更新、卸载 JavaScript 包的功…...

笔试算法总结

文章目录 题目1题目2题目3题目4 题目1 使用 StringBuilder 模拟栈的行为&#xff0c;通过判断相邻2个字符是否相同&#xff0c;如果相同就进行删除 public class Main {public static String fun(String s) {if (s null || s.length() < 1) return s;StringBuilder builde…...

mybatisPlus对于pgSQL中UUID和UUID[]类型的交互

在PGSQL中&#xff0c;有的类型是UUID和UUID[]这种类型&#xff0c;在mybatis和这些类型交互的时候需要手动设置类型处理器才可以&#xff0c;这里记录一下类型处理器的设置 /*** UUID类型处理器*/ public class UUIDTypeHandler extends BaseTypeHandler<UUID> {/*** 获…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...