使用jenkins进行自动化部署

记录一下查看的文档和遇到的坑

什么是jenkins

Jenkins是一个开源的持续集成(CI)和持续交付(CD)工具,主要用于自动化软件开发的各个阶段,包括构建、测试、部署等。

Jenkins基于Java开发,支持与多种版本控制系统(如Git、SVN)、构建工具(如Maven、Ant、Gradle)和软件配置管理工具的集成。它提供了一个友好的操作界面,允许开发者通过Web界面进行配置和管理,支持自动化构建和测试过程,能够监控外部任务的运行。Jenkins也支持持续集成和持续交付的理念,有助于提高软件开发的效率和减少人工错误。

此外,Jenkins可部署在多种平台(如Windows、Linux、Mac)上,并提供了消息通知、测试报告生成等功能。

什么是Gogs

Gogs,全称为Go Git Service,是一个基于 Go 语言开发的Git服务。它提供了一个类似于GitHub的界面和功能,允许您在自己的服务器上搭建私有的Git仓库和代码托管平台(类似gitlab)。

Gogs是一个轻量级的Git服务,其设计和性能优化使得它适合于小型团队和个人开发者。它具有Web界面,可以让您方便地管理和浏览仓库、处理问题、进行代码审查和管理团队成员。

1、安装:Jenkins 的安装(详细教程)

安装我使用的是方式一,并且使用的是周更新的最新war包版本号为:2.452.3,原因是如果使用低版本的会导致自动下载的插件因为jenkins版本太低而无法使用需要一个一个的降低插件版本。jenkins历史版本

2、Jenkins连接git

我这里使用的是公司自己服务器搭建的Gogs,如果用的是其他下载对用的插件就好了

下载插件:

在可用插件中下载插件:webhook、Nodejs(我使用的是gogs所以我下载了gogs插件,自己对应下载自己的托管仓库插件如:gitee或者github)如果是gitee下载gitee webhook

新建项目

创建完成后对项目进行配置

这里是设置最大保留多少个构建版本和最大保留天数的,因为这些都会占用内存

勾选gogs webhook 并填写,填生成的令牌,如果不勾选,下边git输入账号密码

要么生成访问令牌,要么输入git的账号密码,我这里生成的是令牌,生成之后放入gogs secret中

绑定git地址

打包的分支

这里因为前边下载了 webHook插件 所以会多出来一个选项

这里有个token需要在gogs中自己写一个,主要为了安全

回到gogs的设置中仓库管理员有一个仓库设置 如果你是gitee看一下这篇文章:gitee webHook设置密匙

推送地址填写格式为:http://<jenkins地址>/generic-webhook-trigger/invoke?token=<jenkins设置的token>

选择构建时的nodeJs版本

这里是前边下载的nodeJs插件就会有这个选项,但是不会有这个版本号,版本号是根据自己的环境下载的 下载nodeJs版本

接下来就是构建时执行的脚本了

全部命令:

cd C:\Users\31633\.jenkins\workspace\webCode\WebCode

REM 删除旧的 node_modules

rmdir /s /q node_modules

REM 安装依赖

pnpm i

REM 执行构建

pnpm run build

REM 复制构建输出到目标目录

scp -r -o StrictHostKeyChecking=no "C:\Users\31633\.jenkins\workspace\webCode\WebCode\webCodeDist\*" "greatwall@192.168.1.114:/usr/local/tomcat/webapps/newoa"

第一步先进入文件夹 C:\Users\31633\.jenkins 是 jenkins存放的目录也是当时Jenkins密码存放的目录,所有的文件都会放在workspace目录下所以需要先进入这个目录,\WebCode为项目的名称,我这里多了一层是一位我的项目结构需要在进入一层\WebCode才能进行打包,C:\Users\31633\.jenkins\workspace\webCode\WebCode\webCodeDist\* 是我打包后的dist文件

greatwall@192.168.1.114:/usr/local/tomcat/webapps/newoa 是linux的文件地址,就是将打包后的dist文件复制到linux文件夹下。

重点!!!

这里我遇到了一个问题就是当我运行的时候每次执行pmpm i 结束后就不往下执行了,虽然不知道是什么原因导致的但是我的解决方法就是将这些命令给一个一个拆分掉:这里的执行都是同步的,当上一个结束才会进行下一步。

我现在是这样执行的记得每次都需要进入文件后执行。

这里其实就已经基本完成了,但是到最后一步构建完成后复制到linux文件夹内会卡主,这是因为windows访问linux文件夹需要密码卡主等待输入密码呢。参考文档:

1、Windows免密访问linux服务器

2、windows服务器和linux服务器的ssh免密登录失败的解决方案

其他文档:

访问linux

这里有一个坑就是windows生成的公匙一定要使用windows命令来写入到linux中!!!

就是添加公匙这一步。反正核心就是解决windows通过ssh访问linux时免密的问题

相关推荐
yunfanleo9 分钟前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
烦躁的大鼻嘎1 小时前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
乐大师1 小时前
Deepin登录后提示“解锁登陆密钥环里的密码不匹配”
运维·服务器
bug管理者1 小时前
UI自动化测试中公认最佳的设计模式-POM
jenkins·策略模式
ac.char1 小时前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾1 小时前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
传而习乎2 小时前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary2 小时前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
运维&陈同学3 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
是阿建吖!3 小时前
【Linux】进程状态
linux·运维