JenkinsGitLab完成自动化构建部署
关于GitLab安装:GitLab安装-CSDN博客
Docker中安装GitLab:Docker下安装GitLab-CSDN博客

安装JenKins
Jenkins官网:Jenkins
中文版:Jenkins




安装时候中文页面的war包下不来 在英文页面

记得装JDK8以上 JenKins使用java写的 运行JenKins需要JDK环境
我这里已经装好了

将下载好的Jenkins war包上传到服务器

进入war包所在目录
cd /usr/local/develop
运行Jenkins(java -jar jenkins.war -httpPort=8090)这样指定端口运行 Jenkins 默认运行在端口号 8080 这样启动无法关闭后台 可以用nohup(nohup java -jar jenkins2.war &)
java -jar jenkins.war
这里显示该版本需要JDK11 刚才下的是2.426.3

下载个老版本的





进入war包所在目录 运行 这样启动无法关闭后台 可以用nohup(nohup java -jar jenkins2.war &)
java -jar jenkins2.war
又报错 还是JDK问题

重新再下个
2.346.2






大概10秒 下次安装可以选择插件安装 注意 这里不要选推荐安装 一大堆问题


注意 这里不要选推荐安装 一大堆问题

看了下服务器 一大堆报错 注意 这里不要选推荐安装 一大堆问题 报错就是因为选择了安装推荐的插件

是Jenkins版本问题 要安装的插件要求更高版本
先继续吧






Jenkins用来做自动化构建 每一个任务叫一个Item


Jenkins就是从Git上把代码拉下来 然后通过maven构建
那么还需要安装Maven
Maven官网
Maven – Welcome to Apache Maven



进入目录
cd /usr/local/develop
解压
tar zxvf apache-maven-3.9.6-bin.tar.gz
移动文件 像移就移 不想就放着
mv apache-maven-3.9.6 /usr/local/maven
测试Maven构建
/usr/local/maven/bin/mvn
说明没问题

查看环境变量
/usr/local/maven/bin/mvn -v

这样maven就好了
根据提示很多插件都需要2.361.4版本 继续换版本


关掉原来的Jenkins
ps -ef|grep java

试了很多 都需要JDK8以上
随便先玩着吧
nohup java -jar jenkins6.war &
需要安装一个插件 用于使用Maven来构建项目

下次安装可以选择插件安装

往下拉


。。。。。。。。。。。。

2022年7月2日起,jenkins新版本不再支持java8,仅支持java11和java17。
看样子 它要求 Jenkins 版本为 2.361.4 或更高。
想着还是额外再装个JDK17
cd /usr/local/develop
在线下载JDK17
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

cd /usr/local/develop
解压
tar -zxf jdk-17_linux-x64_bin.tar.gz

暂时就切换环境变量来切换JDK吧
配置环境变量
vim /etc/profile

刷新
source /etc/profile
断开shell 由于缓存原因可能 java -version 还是显示1.8

再切换到1.8试试


暂时就用这种笨方法试试吧 下载最新版的JenKins

把JDK换成17

直接下载最新版本


继续刚才的操作



因为刚才是 java -jar的方式启动
关闭Jenkins 后台启动
直接ALT+C就可以关闭
nohup java -jar jenkins2.426.3.war &

去Jenkins配置Maven


点击新建Item



选择一个在自己代码仓库的项目

这个原因是服务器没有装git

安装Git
yum install git

试下git

刷新下页面




指定启动端口

上面两个随手做个笔记
firstDevops

不过这只是构建了jar包 就是Jenkins通过 maven自动构建编译了jar

下面把jar包丢到测试服务器上
先安装一个插件

Publish Over SSH


安装完成后

添加一台测试服务器







目标服务器上的文件夹最好提前建好
保存之后已经在部署了




nohup java -jar /root/xxoo/devops-0.0.1-SNAPSHOT.jar > /root/xxoo/server.log 2>&1 &
nohup java -jar /root/xxoo/devops*.jar > /root/xxoo/server.log 2>&1 & 可以用通配符
nohup /usr/local/develop/jdk1.8.0_191/bin/java -jar /root/xxoo/devops-0.0.1-SNAPSHOT.jar > /root/xxoo/server.log 2>&1 &

设置SSH Publishers超时机制




在目标服务器上写个脚本
vim x.sh



./x.sh 执行之后


删除xxx.txt文件 尝试用Jenkins以命令的方式传过来是否可以用
rm -rf xxx.txt
这里也可以向目标服务器发送命令
在这里可以比如说kill 目标服务器上某个进程 或者执行某个脚本


目标服务器里又有了 xxx.txt 说明 脚本执行成功

那么我们可以在目标服务器写脚本 由Jenkins来执行
编写脚本
vim x.sh

保存后可以试下


还存在一个问题就是 如果jar包没有运行 会报错

那就添加一个判断


其实这里源目录不应该删掉 把日志全删了 这里只是单纯使用下 具体以后要做优化
kill -9是直接杀死
kill -15 优雅点死 反正是死 早死晚死



提交更新代码







像上面这样 还是需要手动去构建 要去JenKins的Item任务里点一下才去构建部署
但一般也不建议使用,比如在测试时候,一个功能点的开发还没全部完成,git一提交就自动部署,一般是不建议的
用不用是你的事,但你得会
原理就是GitLab用钩子自动触发Jenkins自动构建
先看下面这个

就是说你在浏览器里 输入
http://JenKinsIP或者域名:8080/me/my-views/view/all/job/firstDevops/build?token=123456
或者
http://JenKinsIP或者域名:8080/buildWithParameters?token=TOKEN_NAME

Jenkins就自动构建部署了

那么让GitLab钩子去自动调用就好了
但是存在一个问题
在自己同一个浏览器,是可以的原因是你已经登录了
但是你用psotMan或者换成其他浏览器就不行了
会要求你先登录



解决办法:
Jenkins先下载一个插件
Build Authorization Token Root


这个插件的作用就是触发远程校验之后 用它的方式做构建触发 不用再登录了
buildByToken/build?job=firstDevops&token=123456
那么job就是Item任务名字
token就是我们设置的Item的校验
现在用postMan

可以看到 已经在构建部署了

那么就把这个URL地址 让GitLab钩子调用就好了
产生时间之后 让GitLab调用URL 让JenKins构建部署

SSL加上也没事

有些GitLab版本不同 上面可能添加不上
设置下网络 即可


可以点击测试看看JenKins有没有构建部署
测试下
提交代码后 会不会自动构建部署



有好几种构建部署触发器



下面说下定时构建
JenKins cron表达式和标准的cron表达式是有一定区别的 自己查

这边我自己已经测试过了 就是每隔2分钟会去GitLab上拉代码进行构建部署(注意分支 确定是你JenKins上配置的)
一般不会这么做,要做也比如说每天晚上12点 或者说 某几天的晚上12点

这个我就取消掉了 一般不会

Poll SCM触发构建 和上面定时差不多 Jenkins会定时轮询Gitlab上的代码
(注意你配置的分支)


测试通过
我自己测试方式很简单 提交代码到Gitlab 注意测试时候把远程触发关闭
相关文章:
JenkinsGitLab完成自动化构建部署
关于GitLab安装:GitLab安装-CSDN博客 Docker中安装GitLab:Docker下安装GitLab-CSDN博客 安装JenKins Jenkins官网:Jenkins 中文版:Jenkins 安装时候中文页面的war包下不来 在英文页面 记得装JDK8以上 JenKins使用java写的 运行JenKins需要JDK环境 我这里已经装好了 将下…...
JVM 性能调优 - 参数基础(2)
查看 JDK 版本 $ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 查看 Java 帮助文档 $ java -help 用法: java [-options] class [args...] …...
大型软件编程实例分享,诊所门诊处方笺管理系统多台电脑同时使用的软件教程
大型软件编程实例分享,诊所门诊处方笺管理系统多台电脑同时使用的软件教程 一、前言 以下教程以 佳易王诊所门诊电子处方管理系统V17.2 为例说明 软件资源可以点击最下方官网卡片了解详情 软件左侧为导航栏 1、系统参数设置:可以设置打印等参数 2、…...
Java基于微信小程序的医院挂号系统
文章目录 1 简介2 技术栈3 系统目标3.2 系统功能需求分析3.2.1 功能需求分析 4 系统模块设计4.1 数据库模块设计 5 系统的实现5.1 微信小程序个人中心5.2 科**室内容查看的实现**5.3 预约挂号的实现5.4 后台管理界面实现5.5 医生预约管理5.6 医生信息管理 参考文献7 推荐阅读8 …...
你是在独立思考,还是在被洗脑?
你有过这样的经历吗? 老板走过来,急匆匆丢给你一句:帮我整理一下那个客户的资料,下午给我。你抬头,应道「好好好」。老板扬长而去。你转念一想: 等等,哪个客户?什么资料?…...
在django中集成markdown文本框
首先需要下载开源组件:http://editor.md.ipandao.com/,可能需要挂梯子。 百度网盘: 链接:https://pan.baidu.com/s/1D9o3P8EQDqSqfhAw10kYkw 提取码:eric 1.在html代码中生成一个div,ideditor <div c…...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Slider组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Slider组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Slider组件 滑动条组件,通常用于快速调节设置值,如音量调…...
django admin 自定义界面时丢失左侧导航 nav_sidebar
只显示了自定义模板的内容,左侧导航没有显示出来。 原因:context 漏掉了,要补上。 # 错误写法(左侧导航不显示)def changelist_view(self, request, extra_contextNone):form CsvImportForm()payload {"form&qu…...
JSP原理简述
JSP动态网页技术,可以定义html,css,js等静态内容,还可以定义java代码等动态内容。 注意导入坐标时,JSP的scope标签是provided,和servlet一样,否则会报错。 JSP本质上就是一个Servlet,…...
C/C++ - 异常处理
目录 错误处理 异常处理 异常传播 异常规划 标准异常 自定异常 错误处理 在C语言中,错误通常通过函数的返回值来表示。 错误返回值 对于能返回特殊值(如NULL或负值)的函数,在调用时检查这些值来处理错误。 #include <st…...
十、项目开发总结报告(软件工程)
1.引言 1.1编写目的 1.2项目背景 1.3定义 1.4参考资料 2.开发结果 2.1产品 2.2主要功能及性能 2.3所用工时 2.4所用机时 2.5进度 2.6费用 3.评价 3.1生产率评价 3.2技术方案评价 3.3产品质量评价 4ÿ…...
在 VMware 虚拟机上安装 CentOS系统 完整(全图文)教程
一、前期准备: 1.安装VMware 虚拟机软件(不在讲解,可自行去下载安装)。官网:https://customerconnect.vmware.com/cn/downloads/details?downloadGroupWKST-PLAYER-1750&productId1377&rPId111471 2.下载iso…...
吉他学习:右手拨弦方法,右手拨弦训练 左手按弦方法
第六课 右手拨弦方法https://m.lizhiweike.com/lecture2/29362775 第七课 右手拨弦训练https://m.lizhiweike.com/lecture2/29362708...
【初识爬虫+requests模块】
爬虫又称网络蜘蛛、网络机器人。本质就是程序模拟人使用浏览器访问网站,并将需要的数据抓取下来。爬虫不仅能够使用在搜索引擎领域,在数据分析、商业领域都得到了大规模的应用。 URL 每一个URL指向一个资源,可以是一个html页面,一…...
微信小程序(三十八)滚动容器
注释很详细,直接上代码 上一篇 新增内容: 1.滚动触底事件 2.下拉刷新事件 源码: index.wxml <view class"Area"> <!-- scroll-y 垂直滚动refresher-enabled 允许刷新bindrefresherrefresh 绑定刷新作用函数bindscrollto…...
Python学习之路-Tornado基础:数据库
Python学习之路-Tornado基础:数据库 简介 与Django框架相比,Tornado没有自带ORM,对于数据库需要自己去适配。我们使用MySQL数据库。 在Tornado3.0版本以前提供tornado.database模块用来操作MySQL数据库,而从3.0版本开始,此模块…...
Golang的for循环变量和goroutine的陷阱,1.22版本的更新
先来看一段golang 1.22版本之前的for循环的代码 package mainimport "fmt"func main() {done : make(chan bool)values : []string{"chen", "hai", "feng"}for _, v : range values {fmt.Println("start")go func() {fmt.P…...
List 差集
文章目录 基本类型对象类型 基本类型 ListUtils.subtract 方法用于计算两个集合的差集,即返回 list1 中有但 list2 中没有的元素。 其中,list1 指向第一个集合,list2 指向第二个集合。该方法返回一个新的 List 对象,它包含所有在…...
ArcGIS的UTM与高斯-克吕格投影分带要点总结
UTM(通用横轴墨卡托投影、等角横轴割椭圆柱投影)投影分带投影要点: 1)UTM投影采用6度分带 2)可根据公式计算,带数(经度整数位/6)的整数部分31 3)北半球地区࿰…...
华为第二批难题一:基于预训练AI模型的元件库生成
我的理解:华为的这个难道应该是想通过大模型技术,识别元件手册上的图文内容,与现有建库工具结合,有潜力按标准生成各种库模型。 正好,我们正在研究,利用知识图谱技术快速生成装配模型,其中也涉…...
SRS + FFmpeg WebRTC 循环推流环境搭建
SRS FFmpeg WebRTC 循环推流环境搭建指南 本指南介绍如何使用 Docker Compose 快速搭建一个基于 SRS (Simple Realtime Server) 的流媒体测试环境。 推流协议:RTMP (FFmpeg 模拟推流)拉流协议:WebRTC (低延迟播放)特性:视频循环播放、不保存…...
本地Cookie导出终极指南:Get cookies.txt LOCALLY 安全使用教程
本地Cookie导出终极指南:Get cookies.txt LOCALLY 安全使用教程 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 你是否曾担心浏览器Coo…...
银河麒麟V4.0.2-sp4服务器到手后,这三步网络配置(IP/DNS/源)一个都不能少
银河麒麟V4.0.2-sp4服务器网络配置实战指南:从零搭建稳定运行环境 刚拿到一台预装银河麒麟V4.0.2-sp4操作系统的服务器时,许多运维工程师常会陷入"有设备却用不起来"的困境——无法远程连接、软件包安装失败、系统更新卡壳,这些问题…...
el-tabs报错Cannot read properties of null (reading ‘insertBefore‘)
使用elementui-plus的tabs组件在开发中遇到的一个问题,分析了代码,发现逻辑没有任何问题,但是点击tab切换就会报错:Uncaught (in promise) TypeError: Cannot read properties of null (reading insertBefore)调试发现parent参数是…...
OpenClaw多模型管理:Qwen3.5-4B-Claude与其他模型的协作方案
OpenClaw多模型管理:Qwen3.5-4B-Claude与其他模型的协作方案 1. 为什么需要多模型协作 去年冬天,当我第一次尝试用OpenClaw自动化处理技术文档时,发现单一模型很难兼顾所有任务场景。有些模型擅长代码生成但逻辑推理薄弱,有些长…...
C#异步编程完全指南:async/await背后的状态机原理
# C#异步编程完全指南:async/await背后的状态机原理## 引言在现代软件开发中,异步编程已成为构建高响应、高吞吐量应用程序的基石。C# 作为一门不断演进的现代编程语言,从 .NET Framework 4.5 开始引入了 async 和 await 关键字,彻…...
STS4x温度传感器I²C驱动库深度解析与跨平台移植
1. STS4x温湿度传感器驱动库技术解析1.1 项目定位与工程价值Sensirion STS4x系列是瑞士Sensirion公司推出的高精度数字温度传感器,采用CMOSens技术,具备0.1C典型精度、0.01C分辨率、低功耗(典型待机电流仅0.5μA)及快速响应&#…...
SAP EWM开发实战:手把手教你用ABAP OO类 /SCWM/CL_SP_PRD_INB 创建内向交货单
SAP EWM开发实战:基于ABAP OO类实现内向交货单自动化创建 1. 理解内向交货单创建的技术背景 在SAP扩展仓库管理(EWM)系统中,内向交货单(Inbound Delivery)是管理入库流程的核心凭证。与传统的SAP ERP系统不同,EWM模块在设计上采用了更加灵活的…...
AceMenu:嵌入式轻量级菜单框架设计与实践
1. AceMenu 库概述:面向嵌入式人机交互的轻量级菜单框架AceMenu 是一个专为资源受限嵌入式系统设计的轻量级、可移植菜单管理库。其核心设计哲学是“以最少的硬件资源开销,实现最直观的用户导航体验”。不同于通用 GUI 框架(如 LVGL 或 Touch…...
终极指南:用EdgeRemover快速彻底卸载微软Edge浏览器
终极指南:用EdgeRemover快速彻底卸载微软Edge浏览器 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 还在为Windows系统中无法彻底移除Micro…...
