Docker Swarm总结+Jenkins安装配置与集成(4/4)

news2024/11/29 22:43:55

 博主介绍:Java领域优质创作者,博客之星城市赛道TOP20专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。

🍅文末获取源码下载地址🍅

👇🏻 精彩专栏推荐订阅👇🏻 欢迎点赞收藏评论拍砖........

【Docker Swarm总结】《容器技术 Docker+K8S专栏》✅

【uniapp+uinicloud多用户社区博客实战项目】《完整开发文档-从零到完整项目》✅

【Springcloud Alibaba微服务分布式架构 | Spring Cloud】《系列教程-更新完毕》✅

【SpringSecurity-从入门到精通】《学习完整笔记-附(完整demo源码)》✅

【从零开始Vue项目中使用MapboxGL开发三维地图教程】《系列教程-不定时更新》✅

【Vue.js学习详细课程系列】《共32节专栏收录内容》✅

感兴趣的可以先收藏起来相关问题都可以给我留言咨询,希望帮助更多的人。


目录

19、Jenkins 安装与配置

19.1 Jenkins 简介

19.2 安装 JDK

19.3 安装 maven

19.4 安装启动 Jenkins

19.5 配置 Jenkins

20、Jenkins 集成 SonarQube

20.1 Jenkins 中安装SonarScanner

20.2 Jenkins 配置 SonarQube

21、Jenkins 集成目标服务器

22、自由风格的 CI 操作(中间架构)

22.1 中间架构图

22.2 创建 web 项目

22.3 Idea 提交项目到远程仓库

22.4 从 GitLab 拉取代码

22.5 将项目打为 jar 包


19、Jenkins 安装与配置

19.1 Jenkins 简介

(1) 百度百科
以下是百度百科中关于 Jenkins 的词条:
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
(2) 主机要求
这里要使用docker方式来安装,所以需要一台安装有docker及docker-compose的主机。

19.2 安装 JDK

由于 Jenkins 通过调用 Maven 来实现对项目的构建,所以需要在 Jenkins 主机中安装Maven。由于 maven 的运行需要 JDK 的环境,所以需要首安装 JDK。
对于 JDK 的安装非常简单,只需要从官网下载相应版本的 JDK 到 Linux 系统后,直接解压即可。无需配置。这里下载的是 jdk-8u211-linux-x64.tar.gz,将其解压到了/opt/apps 目录下,并重命名为了 jdk。

19.3 安装 maven

(1) 下载解压 maven
首先需要从官网下载最新版本的 Maven 到 Linux 系统后,直接解压。这里下载的是apache-maven-3.9.0-bin.tar.gz,将其解压到/opt/apps 目录下,并重命名为 maven。

(2) 配置 maven 镜像仓库
maven解压后需要修改解压目录中conf/settings.xml文件中的两处配置。这里配置maven的镜像源为 aliyun。

(3) 配置 maven 编译器版本
maven 默认的编译器版本为 JDK1.4,这里需要指定为 JDK1.8。配置了该<profile>后,在文件最后的<activeProfiles>中再激活一下即可。

19.4 安装启动 Jenkins

(1) 下载镜像
这里要使用 docker 方式来安装 Jenkins,所以需要先下载 Jenkins 的镜像。

(2) 启动 jenkins
使用 docker run 命令启动 Jenkins。


(3) 修改数据卷权限
当 Jenkins 启动后,通过 docker logs jenkins 命令查看 jenkins 的日志可以看到出错了。

原因是,jenkins 需向数据卷挂载点的文件/var/jenkins_home/copy_reference_file.log 中写入日志时,由于写入操作的用户不是 root 用户,而非 root 用户对数据卷没有写操作权限。

此时需要修改数据卷操作权限,为非 root 用户添加写操作权限。


此时再查看,发现已经具备了写操作权限。

(4) 重启 jenkins
重启 jenkins 容器。


(5) 修改插件下载源
由于 jenkins 在后期运行时需要下载很多的插件,而这些插件默认都是从国外的 Jenkins官方服务器上下载的,下载速度很慢,且下载失败的比例很高。所以,一般会先将这些插件的下载源更新为国内的服务器。
该更新文件是数据卷目录中的 hudson.model.UpdateCenter.xml。

查看该文件内容:


将该默认的<url>更换为清华大学的下载源地址。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json

(6) 查看 admin 默认密码
通过 docker logs jenkins 命令查看日志,可以看到已经正常了。并且在最后还可以看到Jenkins 的 admin 用户及其初始化密码。


(7) 插件下载
在浏览器中键入 jenkins 的地址后进行访问,可看到 Jenkins 解锁页面。在管理员密码中输入前面 docker logs jenkins 中看到的初始化密码后继续。

保持默认的选择即可。

该页面需要的时间可能会较长。


(8) 创建管理员用户

19.5 配置 Jenkins

(1) 安装两个插件
点击 Manage Jenkins 中的 Manage Plugins 页面,在 Available plugins 选项卡页面的搜索栏中分别键入 Git Parameter 与 Publish Over SSH,选中它们后,Install without restart。

然后就可看到下载过程显示“等待”,直到看到下面的“完成”“Success”后,即可返回首页了。

(2) 移动 JDK 与 Maven
首先要将 Jenkins 主机中的 JDK 与 Maven 解压目录移动到数据卷/var/Jenkins_home 中。


(3) 配置 JDK 与 Maven
在 Manage Jenkins 的 Global Tool Configuration 页面中配置 Maven 与 JDK。

这里填写的是容器中挂载点目录中的路径。

这里填写的也是容器中挂载点目录中的路径。最后再应用并保存。
 

20、Jenkins 集成 SonarQube

20.1 Jenkins 中安装SonarScanner

(1) SonarScanner 简介
SonarScanner 是一种代码扫描工具,专门用来扫描和分析项目代码质量。扫描和分析完成之后,会将结果写入到 SonarQube 服务器的数据库中,并在 SonarQube 平台显示这些数据。


(2) 下载
在 SonarQube 官网的帮助文档中可以下载 SonarScanner。这里下载一个 Linux 系统下使
用的版本。

(3) 安装 unzip
由于下载的 SonarScannner 是 zip 压缩类型的,所以需要在 Linux 系统中安装 unzip 命令,
以解压该压缩包。


(4) 解压/移动
解压 zip 压缩包。


由于后期要在 Jenkins 中集成 SonarScanner,需要 SonarScanner 存在于 Jenkins 服务器中的数据卷目录中。所以将解压后的目录移动到数据卷jenkins_home下并更名为sonar_scanner。

(5) 修改配置文件
在 sonar-scanner 目录的 conf 目录下有其配置文件 sonar-scanner.properties。修改该配置文件。

20.2 Jenkins 配置 SonarQube

(1) 安装插件
在 Jenkins 页面的系统管理  插件管理  Available plugins 中搜索 sonarqube scanner,
安装该插件。该插件用于连接 SonarScanner。

安装完毕后,点选“安装完成后重启 Jenkins”,进行重启。
 

(2) 添加 Sonarqube
打开 Jenkins 的 Manage Jenkins  Configure System 页面,找到 SonarQube servers,添加 SonarQube 服务器。

点击 Add SonarQube 按钮后即可看到以下配置框。
 

(3) 添加 SonarScanner
这里要将前面安装在 Jenkins 数据卷中的 SonarScanner 配置到 Jenkins 中。
在 Jenkins 页面的 Manage Jenkins  全局工具配置 中找到 SonarQube Scanner。
 

21、Jenkins 集成目标服务器


这里要配置连接到目标服务器的连接方式。打开 Manage Jenkins 中的 Configure System页面。

将页面拉到最下面,可以看到 Publish over SSH。这里可以设置非对称加密的身份验证方式,也可设置对称加密的身份验证方式。这里采用对称加密身份验证方式。点击新增按钮。
 

填写完毕后,页面拉到最下面,点击 Test Configuration 进行测试。如果可以看到 Success,
说明连接成功。然后再应用并保存。


22、自由风格的 CI 操作(中间架构)

22.1 中间架构图

22.2 创建 web 项目


创建一个 web 项目,就使用最简单的 spring boot 工程,例如工程名为 hellojks。仅需导
入 spring web 依赖即可。
 

(1) 创建工程
创建一个 Spring Boot 工程,其仅包含一个 spring web 依赖。
(2) 定义 Controller
只需定义一个简单的 Controller 即可。

(3) 访问效果
 

22.3 Idea 提交项目到远程仓库

(1) 在 GitLab 中创建远程仓库
首先在 GitLab 中创建一个远程仓库,用于管理前面 Idea 中创建的工程。
 

点击Create project后就可进入下个页面,可以看到当前仓库的信息及相关的操作命令。
客户端通过这些命令可完成对该仓库的操作。
 

(2) 创建用户
仿照远程仓库页面中的 Git global stetup 中的命令,在项目的 Terminal 窗口中创建一个
全局用户。
 

(3) 初始化本地仓库
将当前的项目目录 hellojks 初始化为本地仓库。
 

(4) 提交代码到本地库
在项目上右击,选择 Git  Commit Directory。
 

此时会弹出一个 Commit to master 的窗口。在其中选择要提交的文件,并在文本区填写提交日志。然后 Commit。


然后会看到警告,不影响提交,直接再 Commit Anyway 即可。
 

提交后变为以下形式。
 

(5) 提交到远程库
首先要从远程仓库中获取仓库地址。选择复制 Clone with HTTP 的地址。
 

然后在项目上右键,选择 Git  Push
 

在新窗口中点击 Define remote,在弹出的窗口中粘贴进复制来的远程仓库地址。
 

Push 后会弹出访问 GitLab 的登录窗口,输入用户名 root,密码为前面修改过的 8 个 1。


推送成功后,在 idea 右下角即可看到成功提示。

此时刷新 GitLab 页面,即可看到推送来的项目。


22.4 从 GitLab 拉取代码

(1) 新建任务
 

(2) Jenkins 集成 GitLab
在点击确定后即可立即配置 Jenkins 中 GitLab 服务器的信息。

对于 public 的 GitLab 仓库,直接指定仓库地址,应用保存即可。但对于 private 仓库,则需要指定访问 GitLab 的用户名与密码。点击添加按钮,即可打开下面的窗口。

在其中填写用户名与密码后“添加”即可返回之前的页面,此时在 Credentials 下拉框中即可找到新添加的用户信息,选择即可。


(3) 立即构建

任务创建成功后即可看到如下页面。在该页面中点击“立即构建”,Jenkins 即可开始从GitLab 上拉取项目。此时右下角就会发生变化。

点击右下角的日期时间,选择控制台输出,可看到这个拉取过程的日志。


从以上日志的 git init /var/jenkins_home/workspace/my_hellojks 命令可以看出,Jenkins将其容器内的/var/jenkins_home/workspace/my_hellojks 目录作为项目的本地仓库。也就是将数据卷目录。进入 jenkins 数据卷可以看到该项目已经存在了。

22.5 将项目打为 jar 包

在 Jenkins 能够通过配置,调用本地的 maven 的 mvn 命令,将拉取来的项目打为 Jar 包。
(1) Jenkins 配置 mvn 命令

点击配置后,打开配置页面。然后点击 Build Steps,跳转到以下位置。
 

选择调用顶层 Maven 目标,即可使用前面配置的 Maven 来完成打包任务。


在 Maven 版本下拉框中选择前面配置好的 maven,目标中写入需要 maven 去执行的maven 命令,应用保存后,自动跳转回任务首页。


 

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

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

相关文章

Python中zip()函数用法解析

打包 zip() 函数是 Python 中一个非常有用的函数&#xff0c;它用于将多个可迭代对象组合成一个元组序列&#xff0c;依次将来自每个可迭代对象的元素打包在一起。 基本的语法是 zip(iterable1, iterable2, ...)&#xff0c;其中 iterable1, iterable2, ... 是要合并的可迭代…

python游戏开发pygame初步

文章目录 安装和示例移动物体优化 安装和示例 顾名思义&#xff0c;PyGame就是用来做游戏的Python库&#xff0c;提供了许多游戏开发功能&#xff0c;如图像处理、音频播放、事件处理、碰撞检测等等。从这个角度来说&#xff0c;pygame不仅是一个游戏库&#xff0c;同时也是一…

【代码】基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法matlab

程序名称&#xff1a;基于量子粒子群算法&#xff08;QPSO&#xff09;优化LSTM的风电、负荷等时间序列预测算法 实现平台&#xff1a;matlab 代码简介&#xff1a;代码是基于QPSO-LSTM的负荷、光伏、风电等时间序列预测&#xff0c;MATLAB编写。包含LSTM&#xff08;长短时记…

leetcode刷题详解四

25. K 个一组翻转链表 这道题本质上还是用的反转前n个链表的思想。 具体细节如下&#xff1a; 先调用一次函数&#xff0c;使用一个newHead接受返回值&#xff0c;这个是为了方便最后函数的返回。 调用reverseN这个函数的时候&#xff0c;要标记反转这段链表的前置节点和后置节…

基于C#实现三元组

我们知道矩阵是一个非常强大的数据结构&#xff0c;在动态规划以及各种图论算法上都有广泛的应用&#xff0c;当然矩阵有着不足的地方就是空间和时间复杂度都维持在 N2 上&#xff0c;比如 1w 个数字建立一个矩阵&#xff0c;在内存中会占用 1w*1w1 亿的类型空间&#xff0c;这…

Hadoop实践指南:揭秘HDFS元数据并解析案例

1.什么是元数据 元数据&#xff08;Metadata&#xff09;&#xff0c;描述数据的数据&#xff08;data about data&#xff09;。 1.1 HDFS元数据 元数据&#xff1a;关于文件或目录的描述信息&#xff0c;如文件所在路径、文件名称、文件类型等等&#xff0c;这些信息称为文…

二进制数据转换成十六进制表示 binascii.hexlify()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 二进制数据转换成十六进制表示 binascii.hexlify() 选择题 binascii.hexlify()参数的数据类型可以是&#xff1f; import binascii number 11 byte_data number.to_bytes() hex_data bin…

NX二次开发UF_CURVE_ask_conic_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_conic_data Defined in: uf_curve.h int UF_CURVE_ask_conic_data(tag_t conic, UF_CURVE_conic_t * conic_data ) overview 概述 Reads the data from the conic ar…

SSF-CNN:空间光谱融合的卷积光谱图像超分网络

SSF-CNN: SPATIAL AND SPECTRAL FUSION WITH CNN FOR HYPERSPECTRAL IMAGE SUPER-RESOLUTION 文章目录 SSF-CNN: SPATIAL AND SPECTRAL FUSION WITH CNN FOR HYPERSPECTRAL IMAGE SUPER-RESOLUTION简介解决问题网络框架代码实现训练部分运行结果 简介 ​ 本文提出了一种利用空…

基于STC12C5A60S2系列1T 8051单片读写掉电保存数据IIC总线器件24C02多字节并显示在液晶显示器LCD1602上应用

基于STC12C5A60S2系列1T 8051单片多字节读写掉电保存数据IIC总线器件24C02多字节并显示在液晶显示器LCD1602上应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍IIC通…

pytorch分布式训练

1 基本概念 rank&#xff1a;进程号&#xff0c;在多进程上下文中&#xff0c;我们通常假定rank 0是第一个进程或者主进程&#xff0c;其它进程分别具有1&#xff0c;2&#xff0c;3不同rank号&#xff0c;这样总共具有4个进程 node&#xff1a;物理节点&#xff0c;可以是一个…

Java游戏之王者荣耀

首先创建类&#xff1a; 游戏运行结果如下&#xff1a; GameFrame类 所需图片&#xff1a; GameObject类 Turret类 所需图片&#xff1a; TurretBlue类 TurretRed类 Champion类 所需图片&#xff1a; 单个&#xff1a; move包: ChampionDaji类 所需图片&#xff1a; Minio…

css加载会造成阻塞吗??

前言 前几天面试问到了这个问题&#xff0c;当时这个答得不敢确定哈哈&#xff0c;虽然一面还是过了 现在再分析下这个&#xff0c;总结下&#xff0c;等下次遇到就能自信得回答&#xff0c;666 准备工作 为了完成本次测试&#xff0c;先来科普一下&#xff0c;如何利用chr…

输出后,我悟了!

大家好&#xff0c;我是木川 今天和前同事吃饭聊天&#xff0c;谈到了输出&#xff0c;今天简单谈下关于输出的重要性 一、为什么要输出 1、不输出容易忘&#xff0c;如果不输出很容易就忘记了&#xff0c;如果再遇见一次&#xff0c;还是需要重新学习&#xff0c;实际上是浪费…

【如何学习Python自动化测试】—— Python 的 unittest 框架

10 、Python 的 unittest 框架 10.1 Unittest 框架介绍 Unittest是Python语言中的一种测试框架&#xff0c;是Python标准库中的一个模块。它可以帮助开发者编写自动化测试&#xff0c;可以进行单元测试、集成测试、功能测试等各种类型的测试。 Unittest的特点是简单易学&#…

用 Addon 增强 Node.js 和 Electron 应用的原生能力

前言 Node.js Addon 是 Node.js 中为 JavaScript 环境提供 C/C 交互能力的机制。其形态十分类似 Java 的 JNI&#xff0c;都是通过提供一套 C/C SDK&#xff0c;用于在 C/C 中创建函数方法、进行数据转换&#xff0c;以便 JavaScript / Java 等语言进行调用。这样编写的代码通常…

突破技术障碍:软件工程师如何应对项目中的难题?

在软件开发项目中&#xff0c;工程师常常会遇到各种技术难题。这些难题可能涉及到复杂的算法、不兼容的系统、难以预见的软件行为&#xff0c;或者其他许多方面。 以下是一些策略和方法&#xff0c;可以帮助软件工程师有效地应对这些挑战&#xff1a; 1、理解问题&#xff1a;…

MySQL数据库——存储函数(介绍、案例)

目录 介绍 案例 介绍 存储函数是有返回值的存储过程&#xff0c;存储函数的参数只能是IN类型的。具体语法如下&#xff1a; CREATE FUNCTION 存储函数名称 ([ 参数列表 ]) RETURNS type [characteristic ...] BEGIN-- SQL语句RETURN ...;END ; characteristic说明&#xf…

Matplotlib子图的创建_Python数据分析与可视化

Matplotlib子图的创建 plt.axes创建子图fig.add_axes()创建子图 plt.axes创建子图 前面已经介绍过plt.axes函数&#xff0c;这个函数默认配置是创建一个标准的坐标轴&#xff0c;填满整张图。 它还有一个可选的参数&#xff0c;由图形坐标系统的四个值构成。这四个值表示为坐…