线报网站如何做/培训心得体会2000字
Jenkins是一个开源的持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)工具,广泛应用于软件开发过程中。它基于Java开发,旨在提供一个开放易用的软件平台,帮助软件项目实现持续集成和持续交付。它的主要功能有以下几点:
1.自动化构建:Jenkins可以根据配置自动从代码仓库获取代码,并执行编译、打包等构建操作,例如对于Java项目进行Maven或Gradle构建。
2.集成多种工具:Jenkins能够与多种开发工具和技术集成,如Git、Subversion等版本控制系统,以及JUnit、Selenium等测试框架。
3.分布式构建:支持在多台机器上进行分布式的构建任务,以提高构建效率,缩短构建时间。
工作流程图:
提取 Jenkins镜像
[root@hw-81969 ~]# docker pull jenkins/jenkins
查看镜像
[root@hw-81969 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins latest 93d377dce516 2 days ago 441MB
运行docker镜像
[root@hw-81969 ~]# docker run -d -u root -p 1000:8080 -v /jenkins:/var/jenkins_home --name jenkins1 镜像id
访问 Jenkins http://ip地址:1000/
获取密码,根据它的提示到指定目录寻找,或者通过查看日志获取
[root@hw-81969 ~]# docker logs 镜像id
另外一种获取密码的方法:
docker exec -it [容器名称] /bin/bash
cat /var/jenkins_mount/secrets/initialAdminPassword
exit
输入密码后进入插件选择的界面,推荐安装就行
设定管理员账号,我们直接用admin账号
进入系统管理–>插件管理来安装我们下方用到的插件
Localization:Chinese(Simplified) 汉化插件
Gitee Plugin 对接gitee的插件
Publish Over SSH 远程连接访问的插件
Email Extension 发送邮件插件
NodeJS 构建Vue等项目
Docker Docker插件
Generic Webhook Trigger 触发构建任务
thinbackup 数据定期备份
等待其安装完毕,就可以开始使用,默认的站点比较慢,在【高级页面】更换其它国内的镜像
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
进入【新建任务】页面,输入名称选择【构建一个自由风格的软件项目】,保存。保存之后配置先不用配,进入下一步
生成令牌 — 路径:在gitee个人页面->【设置】->【私人令牌】->【生成新令牌】即可。生成完成后记得及时保存
在Jenkins面板点击【添加】,选择下图选项:成功之后记得保存
进入【我的视图】,找到刚新建的任务,进入配置页面, 对这个任务的构建进行配置
进入我们的gitee要部署的仓库项目的页面,把地址复制下来
配置远程服务器连接: 我们要用 Pushlish over SSH: 用来连接远程服务器,作为仓库服务器。下面开始配置
首先进入【系统管理】-> 【系统配置】,往下滑找到【Publish over SSH】,然后点击新增
成功之后,连接服务器的配置就完成了
配置邮箱通知信息
选择要通知的邮箱,开启smtp服务,我用的QQ邮箱,点击生成授权码保存下来。
到【系统管理】->【系统配置】配置我们的邮箱信息,共有3个地方需要填写
需要填写的信息
SMTP服务器: smtp.qq.com
用户默认邮件后缀 @qq.com
勾选【使用SSL协议】
SMTP端口 465
邮箱整合项目
首先呢先在具体任务的【构建后操作】去配置
构建模板
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head><body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"><table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sansserif"><tr><td>(本邮件是程序自动下发的,请勿回复!)</td></tr><tr><td><h2><font color="#0000FF">构建结果 - ${BUILD_STATUS}</font></h2></td></tr><tr><td><br /><b><font color="#0B610B">构建信息</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>项目名称 : ${PROJECT_NAME}</li><li>构建编号 : 第${BUILD_NUMBER}次构建</li><li>Git版本 : ${GIT_REVISION}</li><li>触发原因: ${CAUSE}</li><li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li><li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li><li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li><li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li></ul></td></tr><tr><td><br /><b><font color="#0B610B">构建之后的变化</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li></ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true,format="Changes for Build #%n\n%c\n",showPaths=true,changesFormat="%a%m",pathFormat="\\t%p\\n"}</td></tr><tr><td><br /><b><font color="#0B610B">失败的测试结果</font></b></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica,sans-serif">${FAILED_TESTS}</pre><br /></td></tr><tr><td><br /><b><font color="#0B610B">构建日志</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG}</textarea></td></tr></table>
</body></html>
修改【系统配置】中默认的邮箱设置可以达到复用效果
Jenkins的所有数据文件都存在文件中,Jenkins备份就是备份JENKINS_HOME目录。其中 workspace, builds 和 fingerprints目录是不需要备份的。
安装插件,在【系统管理】下方有【thinbackup】选项
内容从至下为备份、恢复、设置。需要设置的地方:
设定完成后点击save,保存,回到上一界面点击Backup Now。需要的时候点击还原备份,点击restore
部署web前端项目
传统web项目 : 新建我们的任务,步骤和上面介绍的一样,这里不再重复。然后把html文件拷贝到目标服务器
开启Nginx或者Tomcat服务,就可以运行了
部署Vue项目
需安装插件,所有用到的插件上面已经介绍过了
然后在【全局工具配置】配置node版本
接下来也需要配置SSH连接远程服务器, 配置完毕后,开始新建我们的任务,同样上面也介绍了怎样配置服务器和新建任务的步骤,这里不再重复
cd /var/jenkins_home/workspace/文件目录 #进入test项目目录
npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
npm install
npm run build
cd dist
rm -rf 文件名.tar.gz #删除上次打包生成的压缩文件
tar -zcvf 文件名.tar.gz * #把生成的项目打包成test方便传输到远程服务器
cd ../
最后一步,把文件发到远程服务器上,在【构建】或者【构建后操作】选择【send * over ssh】(因为效果是一样的,二者都可以),类似于部署传统web项目
SSH相关配置
dist/*.tar.gz
dist
usr/local/nginx/html/## shell脚本
cd /usr/local/nginx/html # 打开目标文件地址
rm -rf 文件夹名 # 删除包含目标文件的文件夹
mkdir 文件夹名 # 新建同名文件夹
tar -zxvf 文件名.tar.gz -C 文件夹名/ # 解压文件到这个文件夹的目录下
rm -rf 文件名.tar.gz # 删除压缩文件
部署SpringBoot项目 : 因为是java项目,所以我们首先要配置java环境,且用maven打包还要配置maven环境,当然你用其他的打包也可以
安装JDK
点击【系统管理】-> 【全局工具配置】即可进入配置面板
新增Maven
修改maven镜像源,改成阿里云镜像
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public</url><mirrorOf>central</mirrorOf></mirror>
完成后点击保存即可,这样我们的jdk与maven就构建完成
部署服务
设置maven相关配置,然后保存
需要输入的命令
clean package
pom.xml
增加shell命令,自动部署运行
填入命令 注意这分为直接运行jar包与运行Docker容器运行两种类型,分别说明一下
jar包运行方式的脚本
sudo fuser -k -n tcp 项目端口号
cd 生成的jar包目录
nohup java -jar 文件名 > 日志目录文件地址 &
Docker容器运行的脚本
使用Docker运行首先需要制作Docker容器,在项目根目录编写Dockerfile文件,然后上传到代码仓库
#FROM openjdk:8-jdk-alpine
FROM hub.c.163.com/dwyane/openjdk:8
MAINTAINER qinadu<邮箱地址>
EXPOSE 8080 # 对外暴露的端口
CMD ["--server.port:8080"] # 映射端口
CMD echo "---Docker容器环境配置成功,即将运行---"
copy *.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
CMD echo "---服务开启成功,访问端口:8080---"
clean install -Dmaven.test.skip=true
最后在构建项目中执行shell脚本,保存
mvn docker:build -t 镜像别名
echo "当前docker 镜像:"
docker images | grep 镜像别名
echo "启动容器----->"
docker run -d -p --name 容器名 镜像别名
echo "启动服务成功!"
然后开始构建我们的项目,返回上一步,进入如下页面开始构建 (Build with Parameters)
改造shell脚本,如果下次构建该项目的时候,docker镜像和服务已存在,需要先删除镜像和服务
# 先删除之前的容器
echo "移除之前的容器>>>"
docker ps -a | grep 容器名 | awk '{print $1}'| xargs docker rm -f
# 删除之前的镜像
echo "移除之前的镜像>>>"
docker rmi 镜像别名
# 构建镜像
mvn docker:build -t 镜像别名
# 打印当前镜像
echo "当前镜像>>>"
docker images | grep 镜像别名
# 启动容器
echo "容器启动中>>>"
docker run -d -p --name 容器名 镜像别名
# 打印当前容器
echo "当前容器>>>"
docker images | grep 容器名
echo "启动服务成功!"
配置镜像容器服务
创建镜像仓库
使用jenkins构建
IMAGE_NAME='registry.cn-beijing.aliyuncs.com/{命名空间}/{仓库名称}:web-demo-0.0.1-SNAPSHOT'
echo IMAGE_NAME=$IMAGE_NAME
echo '================当前docker版本=============='
echo `docker -v`echo '================开始创建镜像================'
docker build -t $IMAGE_NAME .echo '================开始推送镜像================'
docker login --username={阿里云Registry登录名} --password={阿里云Registry登录密码} registry.cn-beijing.aliyuncs.com
docker push $IMAGE_NAME
echo '====================OK!================'
提取镜像
IMAGE_NAME='registry.cn-beijing.aliyuncs.com/{命名空间}/{仓库名称}:web-demo-0.0.1-SNAPSHOT'
docker pull $IMAGE_NAME
echo '====================OK!================'
相关文章:

Jenkins持续集成与Web前端、SpringBoot项目的部署
Jenkins是一个开源的持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)工具,广泛应用于软件开发过程中。它基于Java开发,旨在提供一个开放易用的软件平台,帮助软件项…...

如何使用Opentelemetry+jaeger对Go与Java项目实现分布式链路追踪
本文介绍![如何使用Opentelemetryjaeger实现分布式链路追踪] 关于opentelemetry的介绍可以看下面的文章 https://blog.csdn.net/qq_62368250/article/details/143516314本文中相关图片以及源代码地址 https://github.com/wuchenyanghaoshuai/others/blob/main/step39/README.…...

LabVIEW闭环控制系统硬件选型与实时性能
在LabVIEW闭环控制系统的开发中,硬件选型直接影响系统的实时性、精度与稳定性。需综合考虑数据采集速度(采样率、接口带宽)、计算延迟(算法复杂度、处理器性能)、输出响应时间(执行器延迟、控制周期&#x…...

Html5学习教程,从入门到精通, HTML5超链接应用的详细语法知识点和案例代码(18)
HTML5超链接应用的详细语法知识点和案例代码 超链接(Hyperlink),也称为跃点链接,是互联网和文档编辑中的一种重要概念。 超链接的定义 超链接是指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页&#…...

STM32 HAL库 CAN过滤器配置
之前在STM32 f407 CAN收发 基于HAL库和Cubemx配置_stm32f407can收发程序-CSDN博客这篇博文里写了一下配置CAN收发的方法,当时由于并没有使用过滤器的现实需求,所以就也没仔细研究。现在工作中确实需要用到过滤器了,有些项目中控制器和发动机E…...

【前端面试题】Vu3常见的面试题
1.Vue3与 Vue2的核心区别有哪些? 响应式系统 : Vue2:通过Object.defineProperty 实现响应式。这种方式在处理对象属性的添加和删除时存在局限性,且无法直接监控数组的变化 ;Vue3:采用Proxy 实现响应式&…...

【数据分享】2001-2024年我国逐年植被净初级生产力(NPP)数据
植被净初级生产力(Net Primary Productivity,NPP)是生态学中的一个重要概念,表示单位面积植被在特定时间内吸收的净光合有机物,是衡量生态系统中植物通过光合作用所产生的有机物质减去植物呼吸作用消耗的有机物质的量&…...

java-正则表达式
一、正则表达式能干什么? ✅ 验证格式:手机号、邮箱、日期✅ 提取数据:从日志/文本中抓取关键信息✅ 替换文本:批量修改字符串内容 二、Java正则核心API Java中用 java.util.regex 包的两个类: Pattern:…...

正则表达式(复习)
文章目录 一、[]: 一个字符集合二、{}: 重复次数三、特殊符号四、(): 分组五、python代码示例六、注意 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个…...

sonarqube+SonarScanner+postpresql+jenkins
本地执行参考这篇 sonarqubeSonarScannerPostgreSQL实现代码质量扫描(windows)_sonarqube 10.7部署-CSDN博客 集成到Jenkins中操作如下 在 Jenkins 中安装 SonarQube Scanner 和配置 Job 1、安装 SonarQube Scanner 插件: 在 Jenkins 的管理…...
牛客周赛Round 84
本场比赛难度不大,也是本人第一次AK,最后一题用组合数学推公式,本篇博客主要讲解最后一题的思路 G-小红的陡峭值(五)(hard)_牛客周赛 Round 84 思路:本题要我们求p/q mod M ,即p*&am…...

TDengine 配置 ODBC 数据源
简介 TDengine ODBC 是为 TDengine 实现的 ODBC 驱动程序,支持 Windows 系统的应用(如 PowerBI 等)以及用户自定义开发的应用程序,通过 ODBC 标准接口访问本地、远程和云服务的 TDengine 数据库。 TDengine ODBC 提供基于 WebSo…...

numpy常用函数详解
在深度神经网络代码中经常用到numpy库的一些函数,很多看过之后很容易忘记,本文对经常使用的函数进行归纳总结。 np.arange arange是numpy一个常用的函数,该函数主要用于创建等差数列。它的使用方法如下所示: numpy.arange([star…...

deepseek 3FS编译
3FS在ubuntu22.04下的编译(记录下编译过程,方便后续使用) 环境信息 OS ubuntu 22.04内核版本 6.8.0-52-genericlibfuse 3.16.1rust 1.75.0FoundationDB 7.1.66meson 1.0.0ninja 1.10.1 libfuse编译 以下建议均在root下执行 pip3 install…...

【CXX】6.2 str — rust::Str
Rust::Str 公共 API // rust/cxx.hclass Str final { public:Str() noexcept;Str(const Str &) noexcept;Str(const String &) noexcept;// 如果输入不是 UTF-8,抛出 std::invalid_argument 异常。Str(const std::string &);Str(const char *);Str(con…...

制作三维软件学习路线
制作三维软件是一项复杂而富有挑战性的任务,涉及多个领域的知识。下面是一个建议的学习路线,涵盖从基础到高级的知识和技能。你可以根据自己的背景和兴趣进行调整。 ### 1. 编程基础 - **学习编程语言**:C或Python是常用的语言,了…...

【RabbitMQ】事务
事务的简单配置及使用 配置事务管理器声明队列生产者代码测试 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的,…...

常见的交换机端口类型
在计算机网络中,Access端口 和 Trunk端口 是两种常见的交换机端口类型,主要用于VLAN(虚拟局域网)的配置。它们的主要区别在于如何处理VLAN标签和数据帧。 1. Access端口 Access端口通常用于连接终端设备(如PC、打印机…...

Linux Shell 脚本编程极简入门指南
一、学习前提准备 ✅ 环境要求: Linux系统(Ubuntu/CentOS等)或 WSL (Windows用户) 任意文本编辑器(推荐VSCode/Vim) 基础命令行操作能力 🔍 验证环境: # 查看系统默认Shell echo $SHELL #…...

【医院管理会计专题】7.解锁本量利分析:医院医疗服务决策的智慧密码
医院成本核算、绩效管理、运营统计、内部控制、管理会计专题索引 一、引言 在当今医疗行业竞争日益激烈的背景下,医院管理面临着诸多挑战,如何实现高效运营、提升服务质量并控制成本成为关键问题。管理会计作为一种重要的管理工具,在医院管理中发挥着越来越重要的作用。本…...
Kotlin和Java区别
哈哈哈,前段时间,面试的时候,突然问到我Kotlin和Java的区别,一下子把我问懵逼了,确实没遇到问这个的,想了下,说了下Kotlin的编译时空检查机制,代码更简洁,很多封装好的AP…...

Taro 面试题
基础概念 1. Taro 是什么?它的核心特点有哪些? Taro 是京东开源的 多端统一开发框架,基于 React 语法,可编译到 微信小程序、H5、React Native 等多个端。 核心特点: 多端适配:一套代码运行多个端支持 …...

Java部署在window启动报unable tocreate tempdir
在Windows系统中,Java应用在运行时会试图在默认的临时目录中创建文件。该临时目录通常由系统环境变量TEMP或TMP指定。如果这些变量设置不正确、指向一个无效的路径,或者操作系统的权限不足,就会导致“Unable to create tempdir”错误。 解决…...

基于deepseek和开放题库,构建专业大模型微调在线答题系统
为什么要进行大模型微调 大模型微调是将预训练模型适配到特定任务或领域的关键技术,正常情况下大模型通过海量通用数据训练获得广泛知识,但其参数和表征空间面向通用场景,难以直接适配垂直领域或复杂任务。例如在通用医疗问答模型在具体病症诊…...

ios 小组件和数据共享
创建主工程就不必讲了 1 创建小组件 创建子工程 [new Target ] 选择 [ Widger Extension] 小组件入口是WidgetBundle文件,可以进行多个小组件的调试 TestWidget2文件是主要操作,小组件使用swiftUI布局,使用 AppIntent进行事件处理ÿ…...

LVTTL(Low Voltage Transistor-Transistor Logic)电平详解
一、LVTTL电平的定义与核心特性 LVTTL(低压晶体管-晶体管逻辑)是传统TTL(5V)的低电压版本,工作电压通常为3.3V,旨在降低功耗并适配现代低电压集成电路,同时保持与TTL的逻辑兼容性。其核心特点如…...

element tree树形结构默认展开全部
背景: el-tree树形结构,默认展开全部,使用属性default-expand-all【是否默认展开所有节点】;默认展开一级,设置default-expanded-keys【默认展开的节点的 key 的数组】属性值为数组。 因为我这里的数据第一级是四川【省…...

统计登录系统10秒内连续登录失败超过3次的用户
为防止暴力破解用户账号的行为,在输入账号和密码时一般都会限制用户尝试密码输出错误的次数,如果用户多次输错密码后,将在一段时间内锁定账号,常见的有银行类APP、个税App等应用,如下是用户账号密码输入错误的提示图&a…...

音视频软件工程师面试题
一、基础知识 编解码相关 H.264 和 H.265(HEVC)的主要区别是什么?视频编解码的基本流程是什么?关键技术有哪些?音频编解码(如 AAC、MP3、Opus)的区别和应用场景?什么是 B 帧、P 帧、I 帧?它们的作用是什么? 流媒体协议RTMP、HTTP-FLV、HLS、WebRTC 的区别和应用场景…...

架构师面试(十四):注册中心设计
问题 大家或多或少都接触过【注册中心】,对注册中心的基本功能,如:服务注册、服务发现、健康检查和变更通知 ,肯定是耳熟能详的;那么大家对注册中心的架构设计是否了解呢? 如果让你负责设计一个分布式的注…...