当前位置: 首页 > 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 之间的关联,…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

SpringCloudGateway 自定义局部过滤器

场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...