当前位置: 首页 > news >正文

构建Jenkins 2.340持续集成环境

一、前言

本文学习自:2022版Jenkins教程(从配置到实战) 如有不妥,欢迎指正

二、构建资料

已经包括了本文档使用的所有所需的安装包
在这里插入图片描述

三、安装docker

1、解压docker

docker-20.10.10.tgz

2、复制文件

cp docker/* /usr/bin/

3、编写启动文件

[Unit] 
Description=Docker Application Container Engine 
Documentation=https://docs.docker.com 
After=network-online.target firewalld.service 
Wants=network-online.target  
[Service] 
Type=notify 
# the default is not to use systemd for cgroups because the delegate issues still 
# exists and systemd currently does not support the cgroup feature set required 
# for containers run by docker 
ExecStart=/usr/bin/dockerd 
ExecReload=/bin/kill -s HUP $MAINPID 
# Having non-zero Limit*s causes performance problems due to accounting overhead 
# in the kernel. We recommend using cgroups to do container-local accounting. 
LimitNOFILE=infinity 
LimitNPROC=infinity 
LimitCORE=infinity 
# Uncomment TasksMax if your systemd version supports it. 
# Only systemd 226 and above support this version. 
#TasksMax=infinity 
TimeoutStartSec=0 
# set delegate yes so that systemd does not reset the cgroups of docker containers 
Delegate=yes 
# kill only the docker process, not all processes in the cgroup 
KillMode=process 
# restart the docker process if it exits prematurely 
Restart=on-failure 
StartLimitBurst=3 
StartLimitInterval=60s 
[Install] 
WantedBy=multi-user.target
vim /etc/systemd/system/docker.service 

4、授权

chmod +x /etc/systemd/system/docker.service

5、重载

systemctl daemon-reload

6、启动docker

systemctl start docker

7、设置开机自启

systemctl enable docker.service

8、设置阿里云镜像

vim  /etc/docker/daemon.json   #填入下面内容
{
"registry-mirrors": ["https://1tschl8w.mirror.aliyuncs.com"]
}

9、重载

systemctl daemon-reload

10、重启

systemctl restart docker

四、安装Gitlab

1. 官网 : 安装私有化部署版极狐GitLab

如果事先导入了镜像(镜像文件在开头的资料中有)

docker run -d --hostname 192.168.44.146 --publish 443:443 --publish 80:80 --name gitlab --restart always -v /opt/gitlab/config:/etc/gitlab -v /opt/gitlab/log:/var/log/gitlab -v /opt/gitlab/data:/var/opt/gitlab --shm-size 256m 82d3d2e0547d

没有镜像

docker run -d \
--hostname 192.168.44.146 \
--publish 443:443 --publish 80:80 \
--name gitlab \
--restart always \
--volume /opt/gitlab/config:/etc/gitlab:Z \
--volume /opt/gitlab/logs:/var/log/gitlab:Z \
--volume /opt/gitlab/data:/var/opt/gitlab:Z \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest

查看初始密码(进入容器中查看)

cat /etc/gitlab/initlal_root_password
24小时有效
账号 root  密码 b0X/oOKySLpk+CS7bbqXxUsHOnVAvb7ihkhdPOo=

安装完成后需要等待一段时间,第一次启动比较慢,如果遇到提示502,是正常的,还需要等待一下

访问

ip:80

五、安装jenkins

1. 安装java环境和maven环境(资料在开头的资料中有)

编辑文件

vim /etc/profile
export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=${PATH}:${MAVEN_HOME}/binexport JAVA_HOME=/usr/local/java/jdk1.8.0_212
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin

1. 启动jenkins(资料在开头的资料中有)

nohup java -jar jenkins.war &

初始登录账号和密码在启动日志中有打印
在这里插入图片描述

1.1 访问

ip:8080

1.2 因为是后面补的,所以本来还有插件安装的,可以直接看开头的b站连接

2. 场景一: 部署后端SpringBoot服务

2.1 jenkins服务器配置java环境(配置方法不在讲述)
2.2 jenkins服务器配置maven环境(配置方法不在讲述)
2.3 jenkins系统配置maven

【系统管理】-【全局工具配置】
在这里插入图片描述
找到maven,点击添加,配置maven的家目录
在这里插入图片描述

2.4 创建任务,首页点击创建任务

在这里插入图片描述
在这里插入图片描述

2.5 配置任务保存期限和个数

在这里插入图片描述

2.6 配置git地址

源码管理,选择git,注意,只要git地址和凭证没问题,图中错误会自动消失
在这里插入图片描述
配置git凭证,点击凭证下“添加”,添加完成后就可在上方选择到
在这里插入图片描述

在这里插入图片描述

2.7 配置构建环境
  • 我的配置是,maven打包完成后,将jar包发送至另外的一台服务器,并执行脚本启动
    在这里插入图片描述
  • 上图中可看到,这里需要添加一个SSH服务,此时,需要到系统配置中先配置SSH服务,我们找到【系统管理】-【系统配置】–一直往下划找到Publish over SSH
  • 在这里插入图片描述
    在这里插入图片描述
  • 配置完成后,最下方可点击测试,出现success则为配置成功!

在这里插入图片描述* 配置完成后,我们回到任务配置界面,配置构建环境,此时,我们在这里应该可以选择到刚才我们配置的ssh服务在这里插入图片描述

  • 配置说明
    (1)Source files: 指的是你需要传输的文件的位置,这里就是我们需要传输的jar包的位置,他是基于你的任务中间路径来的,举个例子:当你创建了一个叫demo的任务,执行过后(没执行时不会有)会在服务器的/root/.jenkins/workspace/ 目录下,新建一个demo的文件夹,里面存放了你的git拉取的项目,比如我的项目

在这里插入图片描述
我们的任务是demo,maven打包后,我们的jar包路径为demo/target/aaa.jar ,那么,我们的Source files配置为target/*.jar(或者直接写target/aa.jar)就行
(2)Remove prefix:下图的翻译结果说的很明白了,比如我们的jar路径配置为target/aa.jar,这样,执行任务后,会在远程服务器上生成target目录,下面才是我们的jar包,如果我们不需要target目录,则Remove prefix直接配置target
在这里插入图片描述
*
在这里插入图片描述

(3)Remote directory:目标文件夹配置,也就是你的jar包需要传递到目标服务器的哪个目录下,这里有个也不叫坑的东西,就是我们前面步骤中配置了SSH服务,他的默认路径是/root, 也就是说,我们这里如果配置了比如: /opt/demo ,那么,远程SSH服务器上会生成 /root/opt/demo 的文件路径,也就是翻译中说的“此文件夹将位于全局配置中的文件夹(如果存在)下”。这个全局配置中的文件夹默认不配置就是/root。如果你全局配置了/opt ,而你的部署路径要在/opt/demo/下,则Remote directory只需要配置/demo即可。

全局配置在这里
在这里插入图片描述

在这里插入图片描述
(4)Exec command:简单来说,就是你把jar传过去后,要做什么,那么我们这里,当然是启动jar包了,我这里是在远程服务器的目录下创建了启动脚本,直接执行即可,你也可以将你的启动脚本放到项目里面, 和jar包压缩后一起传过去,也可以在添加一个Transfer Set,先把命令传过去,再把jar传过去,最后执行脚本。
在这里插入图片描述
在这里插入图片描述

2.8 至此配置完成,如果你的启动脚本没问题,将实现 git拉取代码、编译打包、传输到另外的服务器,启动这一整条流程。

相关文章:

构建Jenkins 2.340持续集成环境

一、前言 本文学习自:2022版Jenkins教程(从配置到实战) 如有不妥,欢迎指正 二、构建资料 已经包括了本文档使用的所有所需的安装包 三、安装docker 1、解压docker docker-20.10.10.tgz2、复制文件 cp docker/* /usr/bin/3、编写启动文…...

Ubuntu/Centos下OpenJ9 POI输出Excel的Bug

项目更换 JDK为 OpenJ9 后, 使用 POI 导出 Excel 遇到的问题 OpenJ9 版本信息 /opt/jdk/jdk-11.0.178/bin/java -version openjdk version "11.0.17" 2022-10-18 IBM Semeru Runtime Open Edition 11.0.17.0 (build 11.0.178) Eclipse OpenJ9 VM 11.0.17.0 (build …...

链接脚本学习笔记

IAR 一般步骤 链接器用于链接过程。它通常执行以下过程(请注意,某些步骤可以通过命令行选项或链接器配置文件中的指令关闭): 1.确定应用程序中要包含哪些模块。始终包含对象文件中提供的模块。仅当库文件中的模块为从包含的模块…...

NLP顶会近三年小众研究领域

ACL 2022 编码器和解码器框架、自然语言生成、知识i神经元、抽取式文本摘要、预训练语言模型、零样本神经机器翻译等。 2021 新闻标题生成任务等。跨语言命名实体识别、代码搜索、音乐生成、Hi-Transformer、预训练语言模型、语义交互等。 EMNLP 2021 代码摘要生成、隐私…...

[electron] 一 vue3.2+vite+electron 项目集成

一 开发环境系统:windows开发工具: git , vscode,termial环境依赖: node, npm 二 步骤2.1 通过vite 创建vue项目通过 终端执行命令,选择 模板 vuenpm init vite cd 项目目录 npm install npm run dev2.2 集成 electro…...

ESP32 Arduino(十二)lvgl移植使用

一、简介LVGL全程LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库。并且配合LVGL模拟器,可以在电脑对界面进行编辑显示,测试通过后再移植进嵌入式设备中,实现高效的项目开发。SquareLine Studi…...

js一数组按照另一数组进行排序

有时我们需要一个数组按另一数组的顺序来进行排序,总结一下方法,同时某些场景也会用到。 首先一个数组相对简单的情况: var arr1 [52,23,36,11,09]; var arr2 [23,09,11,36,52]; // 要求arr1按照arr2的顺序来排序,可以看到两个…...

JavaScript 类继承

JavaScript 类继承是面向对象编程的一个重要概念,它允许一个类从另一个类继承属性和方法。通过使用继承,可以避免代码重复,并可以在现有类的基础上扩展新功能。 在 JavaScript 中,您可以使用关键字 extends 来实现类继承。例如&a…...

MySQL相关面试题

文章目录union 和 unionAll 的区别?drop、delete与truncate的区别 ?sql 语句如何优化 ?什么是事务 ?事务的四个特性(ACID) ?事务的隔离级别?索引主要有哪几种分类 ?什么时候适合添加索引&#x…...

Python创意作品说明怎么写,python创意编程作品集

大家好,小编来为大家解答以下问题,Python创意作品说明怎么写,python创意编程作品集,现在让我们一起来看看吧! 1、有哪些 Python 经典书籍 书名:深度学习入门 作者:[ 日] 斋藤康毅 …...

icomoon字体图标的使用

很久之前就学习过iconfont图标的使用,今天又遇到一个用icomoon字体图标写的案例,于是详细学习了一下,现整理如下。 一、下载 1.网址: https://icomoon.io/#home 2.点击IcoMoon App。 3.点击 https://icomoon.io/app 4.进入IcoM…...

Java · 常量介绍 · 变量类型转换 · 理解数值提升 · int 和 Stirng 之间的相互转换

书接上回 Java 变量介绍 我们继续学习以下内容. 四、常量字面值常量final 关键字修饰的常量五、理解类型转换int 和 long/double 相互赋值int 和 boolean 相互赋值int 字面值常量给 byte 赋值强制类型转换类型转换小结六、理解数值提升int 和 long 混合运算byte 和 byte 的运算…...

JVM从跨平台到跨专业 Ⅲ -- 类加载与字节码技术【下】

文章目录编译期处理默认构造器自动拆装箱泛型集合取值可变参数foreach 循环switch 字符串switch 枚举枚举类try-with-resources方法重写时的桥接方法匿名内部类类加载阶段加载链接初始化相关练习和应用类加载器类与类加载器启动类加载器拓展类加载器双亲委派模式自定义类加载器…...

ucore的字符输出

ucore的字符输出有cga,lpt,和串口。qemu模拟出来显示器连接到cga中。 cga cga的介绍网站:https://en.wikipedia.org/wiki/Color_Graphics_Adapter cga是显示卡,内部有个叫6845的芯片。cga卡把屏幕划分成一个一个单元格,每个单元格显示一个a…...

【ESP 保姆级教程】玩转emqx数据集成篇① ——认识数据集成

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-10 ❤️❤️ 本篇更新记录 2023-02-10 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

PMP报考条件?

PMP已经被认为是项目管理专业身份的象征,项目经理人取得的重要资质。 PMP考试一般每年在中国大陆地区,会进行四次考试,今天就来详细说一说PMP考试的时间线。 01考试时间PMP考试在中国大陆一年开展四次,分别在每年的3月、6月、9月…...

Vite+Vue3实现版本更新检查,实现页面自动刷新

ViteVue3实现版本更新检查,实现页面自动刷新1、使用Vite插件打包自动生成版本信息2、Vite.config.ts配置3、配置环境变量4、路由配置现有一个需求就是实现管理系统的版本发版,网页实现自动刷新页面获取最新版本 搜索了一下,轮询的方案有点浪费…...

LeetCode刷题模版:292、295、297、299-301、303、304、309、310

目录 简介292. Nim 游戏295. 数据流的中位数297. 二叉树的序列化与反序列化【未理解】299. 猜数字游戏300. 最长递增子序列301. 删除无效的括号【未理解】303. 区域和检索 - 数组不可变304. 二维区域和检索 - 矩阵不可变309. 最佳买卖股票时机含冷冻期310. 最小高度树【未理解】…...

20、CSS中单位:【px和%】【em和rem】【vw|vh|vmin|vmax】的区别

CSS中的px 和 % px (pixels) 是固定单位,也可以叫基本单位,代表像素,可以确保元素的大小不受屏幕分辨率的影响。 % (percentage) 是相对单位,代表元素大小相对于其父元素或视口(viewport)的大小的百分比。使用百分比可…...

第五节 字符设备驱动——点亮LED 灯

通过字符设备章节的学习,我们已经了解了字符设备驱动程序的基本框架,主要是掌握如何申请及释放设备号、添加以及注销设备,初始化、添加与删除cdev 结构体,并通过cdev_init 函数建立cdev 和file_operations 之间的关联,…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性&#xf…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...