使用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时免密的问题

相关推荐
无心水3 小时前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
HalvmånEver3 小时前
Linux:命名管道实现IPC(进程间通信七)
linux·运维·服务器·ipc·命名管道·管道pipe
正在学习前端的---小方同学8 小时前
Harbor部署教程
linux·运维
牛奔9 小时前
Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
运维·docker·云原生·容器·eureka
翼龙云_cloud9 小时前
阿里云渠道商:如何手动一键扩缩容ECS实例?
运维·服务器·阿里云·云计算
DX_水位流量监测11 小时前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
电商API&Tina11 小时前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
Mr_Xuhhh11 小时前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器
f***241114 小时前
高效自动化管理临时文件的技术方案
运维·自动化
m0_7381207215 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh