Jenkins学习

系列文章目录

第一章 基础知识、数据类型学习
第二章 万年历项目
第三章 代码逻辑训练习题
第四章 方法、数组学习
第五章 图书管理系统项目
第六章 面向对象编程:封装、继承、多态学习
第七章 封装继承多态习题
第八章 常用类、包装类、异常处理机制学习
第九章 集合学习
第十章 IO流、多线程学习
第十一章 仓库管理系统JavaSE项目
第十二章 员工管理系统、多表查询、反射实现DBHelper学习
第十三章 DML、DDL、数据库对象学习
第十四章 网络编程、各种标签、CSS学习
第十五章 ECMAScript、BOM学习
第十六章 DOM、jQuery学习
第十七章 servlet、jsp、Cookie、Ajax学习
第十八章 融资管理系统JavaWeb项目
第十九章 MyBatis框架学习
第二十章 逆向工程、Spring框架IOC、AOP学习
第二十一章 SpringMVC框架学习
第二十二章 SpringBoot框架学习
第二十三章 招聘网站框架项目
第二十四章 Vue介绍、窗体内操作、窗体间操作学习
第二十六章 Vue路由配置、网络请求访问框架项目、element组件介绍学习
第二十五章 标准管理系统Vue项目
第二十六章 Linux安装、Nginx反向代理、负载均衡学习
第二十七章 Docker学习
第二十八章 Jenkins学习


文章目录

  • 系列文章目录
  • 前言
  • 一、Jenkins介绍
    • 1. Jenkins介绍
  • 二、Jenkins安装
    • 1. 上传文件
    • 2. 安装Jenkins
    • 3. 修改启动用户为root
    • 4. 配置Java环境
    • 5. 启动Jenkins
    • 6. 检测目录
    • 7. 登录
    • 8. 修改密码
    • 9. 安装插件
    • 10. 拷贝插件
    • 11. 重启Jenkins
  • 三、Git设置
    • 1. 上传文件
    • 2. 解压压缩包
    • 3. 安装所需依赖
    • 4. 编译
    • 5. 安装
    • 6. 修改环境变量
    • 7. 检查git
    • 8. 在Jenkins添加git配置
  • 四、Git流水线
    • 1. 创建流水线
    • 2. 测试流水线
  • 五、Maven配置
    • 1. 上传文件
    • 2. 解压文件
    • 3. 配置环境变量
    • 4. 加载环境变量
    • 5. 测试Maven安装成功与否
    • 6. 替换Maven源
  • 六、Maven流水线
    • 1. 配置Maven环境变量
    • 2. 第一段流水线:Git拉去代码
    • 3. 第二段流水线:把下载的项目打包成.jar文件
    • 4. 第三条流水线:将.jar文件做成Docker镜像
    • 5. 第四段流水线:通过镜像创建容器并启动
    • 6. 第五、六段流水线:删除已存在的容器和镜像
  • 总结


前言

本文我们要讲述:
Jenkins
在下攸攸太上,我在69年6月9日,在电脑上吃了大粪,香的让我跳了起来。


一、Jenkins介绍

1. Jenkins介绍

Jenkins是一个开源的持续集成和持续交付(CI/CD)工具,用于自动化构建、测试和部署软件项目,通过灵活的插件架构和丰富的功能,实现了软件交付流程的自动化。

二、Jenkins安装

1. 上传文件

我们创建/usr/local/jenkins目录(建jenkins文件夹)
在这里插入图片描述

2. 安装Jenkins

cd /usr/local/jenkins
rpm -ivh  jenkins-2.263-1.1.noarch.rpm

3. 修改启动用户为root

vim /etc/sysconfig/jenkins

在文件中将JENKINS_USER=“root”
在这里插入图片描述

4. 配置Java环境

vim /etc/rc.d/init.d/jenkins

在打开的文件中,在光标位置写入如下语句

/usr/local/jdk/jdk1.8.0_231/bin/java

在这里插入图片描述

5. 启动Jenkins

systemctl start jenkins
systemctl status jenkins

在这里插入图片描述
看到actice(running)代表启动成功

6. 检测目录

ll /var/lib/jenkins

在这里插入图片描述
看到很多文件,说明之前的步骤没有错误;
如果没有文件,说明之前的操作有误

7. 登录

通过虚拟机ip:8080访问
进入Jenkins网页,需要输入密码
密码查询语句

cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述
将密码输入密码栏,点击登录后略作等待
会出现插件安装界面,我们点击右上角的X跳过插件安装环节

8. 修改密码

我们点击右上角小人下的Configure,进入设置用户界面,将密码改成自己的密码后save。
后可以根据用户名和密码登录Jenkins
在这里插入图片描述
在这里插入图片描述

9. 安装插件

cd /usr/local/jenkens
tar -zxvf jenkins-plugins.tar.gz
ll plugins/ |wc -l

此为安装插件命令,先进入文件夹,后解压文件,最后查看解压后文件有多少个
在这里插入图片描述

10. 拷贝插件

cp -a plugins/* /var/lib/jenkins/plugins/
ll /var/lib/jenkins/plugins/ |wc -l

将下载好的插件拷贝到指定文件夹下,查看该目录下的文件个数,应该是191,我之后还做了其他操作,所以多了几个
在这里插入图片描述

11. 重启Jenkins

/etc/init.d/jenkins restart

刷新网页后再次登录,可以到Dashboard下的ManageJenkins

三、Git设置

1. 上传文件

将此文件放入/usr/local/git中(新建git文件夹)
在这里插入图片描述

2. 解压压缩包

cd /usr/local/git
tar -zxvf git-2.33.0.tar.gz

3. 安装所需依赖

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

输入y

4. 编译

cd git-2.33.0
make prefix=/usr/local/git all

执行编译命令,需要等很长时间

5. 安装

make prefix=/usr/local/git install

6. 修改环境变量

vim /etc/profile

打开配置文件
将下面的代码复制到配置文件中

export PATH=$PATH:/usr/local/git/bin

在这里插入图片描述

7. 检查git

git --version

在这里插入图片描述

8. 在Jenkins添加git配置

在首页中打开Credentials
在这里插入图片描述
点击下方(global)
在这里插入图片描述
点击Add Credentials
在这里插入图片描述
写入用户名与密码后,点击ok
在这里插入图片描述
点击Update
在这里插入图片描述
可以看到ID已经自动生成了
在这里插入图片描述

四、Git流水线

1. 创建流水线

首页进入New Item
在这里插入图片描述
输入项目名称并选择Pipeline后ok
在这里插入图片描述
Description写入项目描述
在这里插入图片描述
滚到最底部点击在这里插入图片描述
1、先在Sample Step中选择git:Git
2、创建一个将百度网盘中的240919_DemoNginx项目传到Git上,复制他的地址
https://gitee.com/jinjingyuan/240921foureight.git
3、Branch选择master
4、Credentials选择刚刚创建的用户
5、点击Generate Pipeline Script按钮
在这里插入图片描述
复制生成的流水线代码

git credentialsId: 'da6c7934-bfce-4e17-adb9-ec41d8c0fd35', url: 'https://gitee.com/jinjingyuan/240921foureight.git'

将复制的流水线代码用node包裹,放在Pipeline的Script中
在这里插入图片描述
以上步骤完毕后,点击Save

2. 测试流水线

在项目中点击Build Now
在这里插入图片描述
在运行的流水线中点击Console Output
在这里插入图片描述
最后会说SUCCESS
在这里插入图片描述

五、Maven配置

1. 上传文件

创建/usr/local/maven文件夹
放入maven压缩包
在这里插入图片描述

2. 解压文件

cd /usr/local/maven
tar -zxvf apache-maven-3.3.9-bin.tar.gz

在这里插入图片描述

3. 配置环境变量

vim /etc/profile

加入如下代码

MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9
PATH=${MAVEN_HOME}/bin:${PATH}
export PATH

在这里插入图片描述

4. 加载环境变量

source /etc/profile

在这里插入图片描述

5. 测试Maven安装成功与否

mvn -v

在这里插入图片描述

6. 替换Maven源

vim /usr/local/maven/apache-maven-3.3.9/conf/settings.xml

进入settings.xml文件,找到nirrors标签,添加如下内容

	<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf><releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></mirror><localRepository>/usr/local/maven/apache-maven-3.3.9/repository</localRepository>

在这里插入图片描述
后创建/usr/local/maven/apache-maven-3.3.9/repository文件夹

六、Maven流水线

目的:拉取最新代码,将代码打包好,做成镜像,上传到docker中,启动容器后,外部可以访问。

1. 配置Maven环境变量

Jenkins首页点击Manage Jenkins
在这里插入图片描述
点击Configure System
在这里插入图片描述
在Global properties下Add三个环境变量
MAVEN HOME
/usr/local/maven/apache-maven-3.3.9
JAVA HOME
/usr/local/idk/jdk1.8.0 231
PATH+EXTRA
$MAVEN HOME/bin
在这里插入图片描述

2. 第一段流水线:Git拉去代码

我们在Build History里找到#1,在#1下拉框找到Replay
在这里插入图片描述
在Main Script中,用

stage('pull code'){     }

包裹原来的第二行,后Run
在这里插入图片描述
结果:
在这里插入图片描述
在这里插入图片描述

3. 第二段流水线:把下载的项目打包成.jar文件

先去终端运行

/etc/init.d/jenkins restart

类似第一条流水线,我们点击#2的Replay
在这里插入图片描述
点击Console Output
在这里插入图片描述
复制这部分代码**/var/lib/jenkins/workspace/demo0921**
在这里插入图片描述
将Main Script改成如下形式,/var/lib/jenkins/workspace/demo0921放在dir的’‘内,Run
node{
stage(‘compile’){
dir(’/var/lib/jenkins/workspace/demo0921’){
sh ‘mvn clean install’
}
}
}
在这里插入图片描述
检验:
cd /var/lib/jenkins/workspace/demo0921
ll
cd …
ll
四条语句分别执行
在这里插入图片描述

4. 第三条流水线:将.jar文件做成Docker镜像

cd demo0921
mvn clean install

在这里插入图片描述

ll
cd target
ll
java -jar 240919_DemoNginx-1.0-SNAPSHOT.jar

在这里插入图片描述
访问页面显示admin:8888即代表操作成功
在这里插入图片描述
执行如下命令
cd /var/lib/jenkins/workspace/demo0921
rm -rf target
/etc/init.d/jenkins restart
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
/etc/init.d/jenkins restart
Replay的Main Script中
checkout=0
node {
stage(‘pull code’){
git credentialsId: ‘0d34702d-9692-4d06-90f9-821e743c9bc7’, url: ‘https://gitee.com/quanmingzhe/240921maven.git’
}
stage(‘compile’){
dir(‘/var/lib/jenkins/workspace/demo0921’){
sh ‘mvn clean install’
}
}
stage(‘make docker container’){
dir(‘/var/lib/jenkins/workspace/demo0921/target’){
sh “echo FROM openjdk:8 > Dockerfile”
sh “echo ADD 240919_DemoNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile”
sh “echo RUN bash -c '”‘touch /app.jar’“’ >> Dockerfile”
sh “echo ENTRYPOINT ['”‘java’“‘,’”‘-jar’“‘,’”‘/app.jar’“'] >> Dockerfile”
sh “echo RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile”
sh “docker build -t demo0921 .”
}
}
}
在这里插入图片描述

5. 第四段流水线:通过镜像创建容器并启动

checkout=0
node {stage('pull code'){git credentialsId: '0d34702d-9692-4d06-90f9-821e743c9bc7', url: 'https://gitee.com/quanmingzhe/240921maven.git'}stage('compile'){dir('/var/lib/jenkins/workspace/demo0921'){   sh 'mvn clean install'}}stage('make docker container'){dir('/var/lib/jenkins/workspace/demo0921/target'){sh "echo FROM openjdk:8 > Dockerfile"sh "echo ADD 240919_DemoNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"sh "echo RUN bash -c '\"'touch /app.jar'\"' >> Dockerfile"sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"sh "docker build -t demo0921 ."    }}stage('start'){sh 'docker run --name d8 -p 8989:8888 -d dasf'}
}

在这里插入图片描述

6. 第五、六段流水线:删除已存在的容器和镜像

checkout=0
node {stage('pull code'){git credentialsId: '0d34702d-9692-4d06-90f9-821e743c9bc7', url: 'https://gitee.com/quanmingzhe/240921maven.git'}stage('compile'){dir('/var/lib/jenkins/workspace/dasf'){   sh 'mvn clean install'}}stage('remove docker container'){if(checkout==0){sh 'docker stop d8'sh 'docker rm d8'sh 'docker rmi dasf'}}stage('make docker container'){dir('/var/lib/jenkins/workspace/dasf/target'){sh "echo FROM openjdk:8 > Dockerfile"sh "echo ADD 240919_DemoNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"sh "echo RUN bash -c '\"'touch /app.jar'\"' >> Dockerfile"sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"sh "docker build -t dasf ."    }}stage('start'){sh 'docker run --name d8 -p 8989:8888 -d dasf'}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

本文讲述了:
Jenkins:自动化构建、测试和部署软件项目
我还在回味大粪圆圆的滋味,让我想起了之前吃过的7坨爱因斯坦的,他的那个颜色非常鲜艳,应该是1001年2月30日他吃了蛋糕的缘故。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/428821.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue table id一样的列合并

合并场景&#xff1a;如果id一样&#xff0c;则主表列合并&#xff0c;子表列不做合并&#xff0c;可实现单行、多行合并&#xff0c;亲测&#xff01;&#xff01;&#xff01; 展示效果如图示&#xff1a; 组件代码&#xff1a; // table组件 :span-method"objectSpa…

低代码可视化工具-uniapp页面跳转传参-代码生成器

uniapp页面跳转传参 在uni-app中&#xff0c;页面间的跳转和传参是一个常见的需求。uni-app提供了多种页面跳转方式&#xff0c;如uni.navigateTo、uni.redirectTo、uni.reLaunch、uni.switchTab、uni.navigateBack等&#xff0c;每种方式适用于不同的场景。以 页面跳转并传参…

【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study 专栏&#xff1a;用Java学习数据结构系列 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…

加密与安全_优雅存储二要素(AES-256-GCM )

文章目录 什么是二要素如何保护二要素&#xff08;姓名和身份证&#xff09;加密算法分类场景选择算法选择AES - ECB 模式 (不推荐)AES - CBC 模式GCM&#xff08;Galois/Counter Mode&#xff09;AES-256-GCM简介AES-256-GCM工作原理安全优势 应用场景其他模式 和 敏感数据加密…

MySQL:库表的基本操作

库操作 查看 查看存在哪些数据库&#xff1a; show databases;查看自己当前处于哪一个数据库&#xff1a; select database(); 由于我不处于任何一个数据库中&#xff0c;此处值为NULL 查看当前有哪些用户连接到了MySQL&#xff1a; show processlist; 创建 创建一个数据库 语…

前端web端项目运行的时候没有ip访问地址

我们发现 没有netWork 的地址 导致 团队内其他同学无法打开我们的地址 进行访问 在page.json 中的运行 指令中 添加 --host 记得加上空格 这样我们就可以看到这个地址了 团队其他同学 就可以访问我们这个地址了

Tomcat服务器—Windows下载配置详细教程

一、关于 1.1 简介 Tomcat是一个开源的Java Servlet容器和Web服务器&#xff0c;由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages (JSP) 规范&#xff0c;用于运行Java Web应用程序。Tomcat支持多种Java EE功能&#xff0c;并提供了高效的性能和可扩展性&am…

我的AI工具箱Tauri版-VideoDuplication视频素材去重

本教程基于自研的AI工具箱Tauri版进行VideoDuplication视频素材去重。 该项目是基于自研的AI工具箱Tauri版的视频素材去重工具&#xff0c;用于高效地处理和去除重复视频内容。用户可以通过搜索关键词"去重"或通过路径导航到"Python音频技术/视频tools"模…

Linux内核移植实战总结

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 本文仅作为个人笔记使用&#xff0c;方便进一步记录自己的实践总结。 前两章我们简单了解了一下 Linux 内核顶层 Makefile 和 Linux 内核的启动流程&#xff0c;本章我们就来学习一下如何将 NXP官方提供的 Linux 内核移…

电脑网络怎么弄动态ip :步骤详解与优势探讨

在当今的数字化时代&#xff0c;网络连接已成为我们日常生活和工作中不可或缺的一部分。对于大多数用户而言&#xff0c;动态IP地址是一种便捷且常用的网络配置方式&#xff0c;它允许设备在每次连接到网络时自动获取一个新的IP地址。这种设置不仅简化了网络管理&#xff0c;还…

Cypress安装与启动(开始学习记录)

一 Cypress安装 使用npm安装 1.查看node.js npm的版本&#xff0c;输入 npm --version 和 node --version&#xff0c;node.js没安装的可以去中文网下载最新稳定版安装&#xff0c;npm不建议升级到最新版本&#xff0c;会导致安装Cypress时Error: Cannot find module ansi-st…

一个基于 laravel 和 amis 开发的后台框架, 友好的组件使用体验,可轻松实现复杂页面(附源码)

前言 随着互联网应用的发展&#xff0c;后台管理系统的复杂度不断增加&#xff0c;对于开发者而言&#xff0c;既要系统的功能完备&#xff0c;又要追求开发效率的提升。然而&#xff0c;传统的开发方式往往会导致大量的重复劳动&#xff0c;尤其是在构建复杂的管理页面时。有…

MQ入门(4)

Erlang&#xff1a;面向高并发的 单机的吞吐量就是并发性&#xff1a;Rabbitmq是10w左右&#xff08;现实项目中已经足够用了&#xff09;&#xff0c;RocketMQ是10w到20w&#xff0c;Kafka是100w左右。 公司里的并发&#xff08;QPS&#xff09; 大部分的公司每天的QPS大概…

Elionix 电子束曝光系统

Elionix 电子束曝光系统 - 上海纳腾仪器有限公司 -

【FreeRTOS】信号量

1.概念 当访问一个共享资源时&#xff0c;两个任务&#xff0c;并发访问出现不一致的问题&#xff0c;需要通过信号量解决 那么信号量是如何解决这个问题的呢&#xff1f; 任务量你可以认为是一把锁&#xff0c;一个任务拿到这个锁之后访问这个临界资源&#xff0c; 其他任务…

如何设计出一个比较全面的测试用例

目录 1. 测试用例的基本要素(不需要执行结果) 2. 测试用例的给我们带来的好处 3. 用例编写步骤 4. 设计测试用例的方法 4.1 基于需求进行测试用例的设计 4.2 具体的设计方法 1.等价类 2.边界值 3.判定表&#xff08;因果图&#xff09; 4.正交表法 5.场景设计法 6.错误猜测…

视频去噪技术分享

视频去噪是一种视频处理技术&#xff0c;旨在从视频帧中移除噪声和干扰&#xff0c;提高视频质量。噪声可能由多种因素引起&#xff0c;包括低光照条件、高ISO设置、传感器缺陷等。视频去噪对于提升视频内容的可视性和可用性至关重要&#xff0c;特别是在安全监控、医疗成像和视…

【MySQL】基础部分——DDL,DML,DQL,DCL,函数,约束,多表查询,事务

个人学习记录&#xff0c;供以后回顾和复习 ubuntu下安装使用1.DDL&#xff0c;DML&#xff0c;DQL&#xff0c;DCLDDL数据库表 DML增改删 DQL条件查询分组查询排序查询分页查询 DCL管理用户权限控制 2.函数字符串函数数值函数日期函数流程函数 3.约束4.多表查询多表关系内连接…

【Git必看系列】—— Git巨好用的神器之git stash篇

应用场景 当我们开发一个新功能时会先从master拉出一个分支dev&#xff0c;然后在这个dev分支下吭哧吭哧的开始写代码开发新功能&#xff0c;就如下代码所示&#xff0c;我们在dev分支下开发Person类的新功能getId() public class Person {private int id;private String nam…

零工市场小程序:推动零工市场建设

人力资源和社会保障部在2024年4月发布了标题为《地方推进零工市场建设经验做法》的文章。 零工市场小程序的功能 信息登记与发布 精准匹配、推送 在线沟通 权益保障 零工市场小程序作为一个找零工的渠道&#xff0c;在往后随着技术的发展和政策的支持下&#xff0c;功能必然…