Jenkins + Gitlab 实现项目自动化构建及部署

news2025/1/23 7:17:32

通俗来讲就是本地项目 push 到 gitlab 后, Jenkins 能够识别到项目的更新并自动构建部署;
 本文以实际操作的方式来表述详细配置过程及避开配置 Jenkins 时的坑. 默认电脑已经安装了虚拟机, 默认gitlab 上已经有了你想要部署的项目, 部署了 maven 和 jdk 并配置了环境变量!!!

Jenkins + Gitlab

  • 第一步: 检查环境
  • 第二步: 下载 jenkins 镜像并部署
  • 第三步: 启动成功后, 配置 jdk / git / maven
  • 第四步: 新建一个 item; 如果你的项目是一个 maven 项目可以如下选择
  • 第五步: 项目跑起来, 可以收到短信通知

第一步: 检查环境


1 执行指令 java -version 检查是否已安装了 java 环境:

在这里插入图片描述

2 执行指令 mvn -v 检查是否已经安装了 maven:

在这里插入图片描述

3 执行指令 echo $JAVA_HOME 检查 java 环境变量是否已经配置好, 这里的地址后面会用到:
在这里插入图片描述

4 执行指令 echo $MAVEN_HOME 检查 maven 环境变量是否已经配置好, 这里的地址后面也会用到:
在这里插入图片描述

5 虚拟机也要安装 git, 执行指令 which git 查看位置, 后面会用到;

在这里插入图片描述

第二步: 下载 jenkins 镜像并部署


1 需要注意如果是 jdk 8 需要下载对应 jdk 8 对应的版本,链接: 🔗下载地址, 提交到虚拟机:

在这里插入图片描述

2 执行指令 rpm -ivh jenkins-2.346.3-1.1.noarch.rpm 部署 jenkins;

3 执行指令 find / -name jenkins 检查是否已经安装成功:

在这里插入图片描述

4 配置一下端口号, 指令: vi /usr/lib/systemd/system/jenkins.service, 修改如下:

在这里插入图片描述
这里我改成了 8090;

5 重新加载配置文件, 指令: systemctl daemon-reload.

6 启动指令: systemctl start jenkins; 重新启动指令: systemctl restart jenkins; 停止指令: systemctl stop jenkins.

7 启动成功后, 初次登录要输入管理员密码, 指令: cat /var/lib/jenkins/secrets/initialAdminPassword.
在这里插入图片描述

第三步: 启动成功后, 配置 jdk / git / maven


在这里插入图片描述

1 配置 jdk: 别名可以随便写, JAVA_HOME 就是虚拟机 java 的环境变量, 前面有指令;

在这里插入图片描述

2 配置 git;

在这里插入图片描述

3 配置 maven, 地址就是虚拟机 maven 环境变量的地址;

在这里插入图片描述

第四步: 新建一个 item; 如果你的项目是一个 maven 项目可以如下选择


在这里插入图片描述

对项目进行配置:

在这里插入图片描述

1 建议限制构建项目的缓存记录, 否则构建记录多了后会导致空间不足, 这里我设置的是两天会自动清理缓存, 构建记录不会超过 5 个;

在这里插入图片描述

2 git 源码管理进行配置:

在这里插入图片描述

如果报以下错误需要在 url 链接加上您的 gitlab 用户名和密码, 格式为 http://用户名:密码@*******.54:7000/Li/yuan.git

在这里插入图片描述
添加 Credentials 证书凭证, 用户名和密码就是 gitlab 的账号和密码;
在这里插入图片描述

查看 gitlab 上项目分支, 我的是 main:
在这里插入图片描述

3 构建触发器

在这里插入图片描述

格式:

每天凌晨3:00 跑一次: H 3 * * *
每隔5分钟构建一次: H/5 * * * *
每五小时构建一次: H H/5 * * *
每天中午12点定时构建一次: H 12 * * *
每天下午 17点前 定时构建一次: H 17 * * *
每15分钟构建一次: H/15 * * * *

4 编写执行脚本; 可以当做模板来写, 只不过需要修改以下信息:
在这里插入图片描述
这三处的信息可以查看虚拟机上的信息直接复制过来即可, 操作如下:
在这里插入图片描述
进入到此目录下, 这里的 JAR_NAME 就是 target 目录下包的名称, 如果没有此包的话可以先在虚拟机上跑一下, 这样地址等信息可以直接复制过来, 方便至极!!!
在这里插入图片描述

5 修改 pom 文件; 这个路径就是上面 workspace 中项目中的 pom.xml 文件路径, 直接从虚拟机上拷贝过来路径即可;
在这里插入图片描述
6 配置邮箱通知;
在这里插入图片描述
配置邮箱时可能出现的问题及解决办法:

Default Recipients

  • 通过Manage Jenkins进入Configure System
  • 查看Default Recipients这一栏是否填写了收件人

Project Recipient List

  • 进入具体的Job
  • 查看Post-build Actions里有没有添加Editable Email Notification这个功能
  • 不要勾选Disable Extended Email Publisher这个选项栏
  • 查看Project Recipient List这一栏有没有填写收件人

Recipient List

  • 还是进入Editable Email Notification这一栏
  • 点击进入右下角Advanced Settings…
  • 查看Triggers这一栏有没有设置对应触发条件,比如Failure-Any和Success
  • 默认的Developers不会发送给收件人,需要选择Recipient List.

第五步: 项目跑起来, 可以收到短信通知

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H5拉新充场app系统源码

拉新充场是一种基于移动互联网技术的营销手段,通常由企业或商家使用推广软件来实现。拉新是指通过各种方式引导潜在用户注册成为企业的会员或客户,充场则是指通过向已有用户提供优惠券、折扣等福利来鼓励其进行消费或充值。 这种营销手段可以帮助企业…

告别脚本小子系列丨JAVA安全(7)——反序列化利用链(中)

0x01 前言 距离上一次更新JAVA安全的系列文章已经过去一段时间了,在上一篇文章中介绍了反序列化利用链基本知识,并阐述了Transform链的基本知识。Transform链并不是一条完整的利用链,只是CommonsCollections利用链中的一部分。当然并不是所有…

对制造企业来说,该怎么样去选择合适的CRM系统?

随着互联网和数字化技术的发展,CRM(Customer Relationship Management,客户关系管理)系统正越来越被企业所重视。随之而来的是市场上各种不同类型、功能和价格的CRM系统。对制造企业而言,选择合适的CRM系统可以使企业更好地管理客户关系&…

01 【Sass的安装使用】

1.介绍 1.1 CSS预处理技术,及种类介绍 什么是css预处理技术 CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只…

【Makefile】笔记

正点原子Linux驱动13.4.1节,通用Makefile疑难点解释 聊聊 SOBJS : $(patsubst %, obj/%, $(SFILENDIR:.S.o)) 的作用 聊聊变量替换语法 在 Makefile 中,变量替换语法可以用来对变量的值进行修改和转换。有以下几种不同的变量替换语法: $(va…

二分类结局变量Logistic回归临床模型预测(一)——介绍

本节讲的是二分类结局变量的临床模型预测,与之前讲的Cox回归不同,https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/…

C++类与对象this指针

文章目录 前言一,类1.类的引入2.类的定义3.类的作用域4.类的访问限定符及封装封装访问限定符面试题 二,this指针1.this指针定义2.this指针的特性 前言 从此篇往后,开始了C的类和对象的篇章,嗯就说这么多 一,类 1.类的…

Microsoft Forms的應用(文行版)

Microsoft Forms 功能是發起大眾投票及反饋數據的軟件。 首先要開啟Microsoft Forms 先要取得Microsoft Teams 的應用程式,在下載Microsoft Teams 後,可在最左邊的工具列選擇《應用程式》,然後從中開啟Microsoft Forms 就可以了。 看到Micr…

Java如何生成随机数?要不要了解一下

目录 前言一、Random类介绍二、Random类生成随机数1.生成随机数2.nextInt()方法 三、使用场景四、官方提示总结 前言 我们在学习 Java 基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍 Java 随机数。 一、Random类介绍 在 Ja…

C++篇----构造函数和析构函数

在很多时候,当写了初始化,动态开辟的,需要写销毁函数,写了销毁函数之后,但是却忘记了调用这些函数,忘记调用初始化函数还好,编译器会报错,但是如果是忘记调用销毁函数,那…

社科院与美国杜兰大学金融管理硕士项目——选择在职读研是正确的吗

这个世界上,根本没有正确的选择。我们只不过要努力奋斗,使当初的选择变得正确。最近有咨询项目的同学总是在纠结是否要在职读研,在职读研是否是一条正确的路。当我们为此纠结时,其实只有一条路,那就是选择向前走。往前…

有我和另一个00后卷王后,公司老油条们破防了吗?

今年软件测试行业的内卷现象越来越明显,比2022年疫情那会更甚,越来越多的人涌入这个行业,而想要获得更好的待遇和机会,不断提升自己的技能栈成为了测试老油条不得不面对的问题。 不论是哪个级别的测试工程师,面试官都…

络达开发---- AB1562x左右两侧同一按钮不同功能

开发平台:AB1562X SDK版本:V1.5.2 说明:AB1562X支持TWS,左右两个的耳机的按钮在硬件上是芯片的同一个IO口;那如何实现左右按键对应动作A,右侧按钮对应动作B呢?即左右两侧同一按钮的…

【创建一个网页,实现猜数字游戏】

要求如下 逻辑如下: 一个button按钮第二行中,打印“请…数字” 然后一个 输入文本框 然后一个 按钮第三行 打印 “已经猜的次数” 然后打印 猜的次数结果显示 猜大了 猜小了 猜对了 在script中 获取button按钮、输入的数据、记录count的值&#xff…

vue3——咸鱼仔

vue3——咸鱼仔 vue3——咸鱼仔P1.前言 【00:45】P2.创建项目 【02:09】P3.代码格式化 【01:37】P4.commit规范 【01:57】P5.强制commit 【02:41】P6.强制代码规范 【01:03】P7.按需导入elementplus 【02:58】P8.vue3.2新特性 【01:42】P9.初始化项目 【02:47】P10.登录页面静态…

融合开源软件治理经验,助力科技企业规避开源风险

随着开源软件的普及,越来越多的科技企业依赖开源软件实现业务的高速发展,但开源软件存在的安全合规问题,已成为科技企业面临的主要风险之一。 开源网安十年发展,通过为百度、大疆、金蝶等科技企业提供优质的软件安全产品与服务&a…

【虚幻引擎|UE4】TArray在C++中的使用

简介 TArray 类似于STL的vector,可以自动扩容,因为提供了相关操作函数,所以当作队列、栈、堆来使用也很方便,是UE4中最常用的容器类。其速度快、内存消耗小、安全性高。TArray 类型由两大属性定义:元素类型和可选分配…

smardaten社区版/专业版发布,查看特性与区别!

为满足个人和中小团队开发者需求,近期smardaten正式推出社区版与专业版,其中社区版为免费版本,支持一键下载安装。 值得一提的是,本次社区版和专业版,均支持独立私有部署,并进行商业应用交付。 熟悉smard…

Linux网络——Shell编程之条件语句—if 、case

Linux网络——Shell编程之条件语句—if 、case 一、条件测试1.test命令2.文件测试3.整数值比较4.逻辑测试 二、if语句1.单分支结构2.双分支结构3.多分支结构4.实践操作 三、case分支语句1.case多分支结构2.实践操作 一、条件测试 1.test命令 测试表达式是否成立,若…

信息收集(二)IP信息收集

信息收集(一)域名信息收集 什么是CDN? 内容分发网络(CDN): 是指企业利用分布在不同区域的节点服务器群组成流量分配管理平台,为用户提供内容分散存储和高速缓存服务 在渗透测试过程中&#x…