服务搭建篇(九) 使用GitLab+Jenkins搭建CI\CD执行环境 (上) 基础环境搭建

news2024/12/26 23:01:00

1.前言

每当我们程序员开发在本地完成开发之后 , 都要部署到正式环境去使用 , 在一些传统的运维体系中 , 开发与运维都是割裂的 , 开发人员不允许操作正式服务器 , 服务器只能通过运维团队来操作 , 这样可以极大的提高服务器的安全性 , 不经过安全保护的开放服务器 , 对于黑客来说无疑就是打靶的靶场

所以 , 在现代化的大型软件项目中 , 对于开发的要求还是比较高的 , 虽然不会要求像运维老哥那样linux命令熟练到起飞 , 精通各种参数调优 , 安全策略 , 但是基础的运行环境运维的操作也是需要了解的 , 这样才能指导运维老哥进行业务环境部署 , 也就是开发运维一体化。虽然现在有很多工具能够帮助开发人员减少一些复杂的操作,但是开发人员还是需要更多的接触运维的工作

但是这种运维方式,同时也给项目开发过程中带来了很多困难

一方面,开发人员只能向运维人员描述具体的部署方式。但是由于开发人员无法接触到生产服务器,
所以文字描述的方式往往很难保证操作的准确性。经常会出现开发人员在开发环境运行得很好的迭代
包,升级到生产环境上之后无法保证升级的效果。对于现在流行的基于敏捷开发的大型项目来说,很多
需求需要以代码分支的方式进行并行开发,然后再合并部署,这其中更是非常容易出现错误,造成生产
环境不稳定。

另一方面,当项目在线上运行出现故障时,开发人员也很难第一时间接触到错误日志。如果线上出现
问题,开发人员往往需要找运维部门协同,才能获取到生产环境的服务日志。这会极大的延缓错误排查
的及时性

2.DevOps

以上那些问题的核心,其核心就是在传统运维体系下,开发和运维之间是有天然的壁垒和鸿沟的。而
DevOps则是试图打破这些壁垒鸿沟的一种方法论。DevOps是**Development(开发)Operation(运维)**两
个单词的组合,他是一种重视软件开发人员和运维技术人员之间沟通合作的文化、运动或者惯例。通过
自动化软件交互和架构变更的流程,使得构建、测试、发布软件时能够更加快捷、频繁和可靠。
总而言之,DevOps是一个标准,一种方法论或者说是一个目标,并不指一个特定的规则或者一系列
特殊的工具。那要如何落地DevOps呢?通常,这就需要CI\CD出马了。

3.CI&CD

CI\CD中的CI指的是持续集成Continuous Integeration,他是开发人员的自动化过程。成功的CI意味
着人员同的新代码变更会定期构建、测试并合并到共享存储库(比如Git或者SVN)。而CD指的是持续交付 Continuous Delivery和持续部署Continuous Deployment。成功的CD意味着运维人员可以从共享存储
库中持续获取到最新的产品副本,并确保最新的产品副本可以正确更新到服务器上

4.GitLab

gitLib的安装在之前我已经写过一篇文章 , 可以先看看这篇文章把Gitlib安装完毕 :

https://blog.csdn.net/qq_45001002/article/details/129399636?spm=1001.2014.3001.5501

5.Jenkins

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序

5.1 下载

wget https://repo.huaweicloud.com/jenkins/redhat-stable/jenkins-2.346.3-1.1.noarch.rpm

5.2 安装

rpm -ivh jenkins-2.346.3-1.1.noarch.rpm

5.3 修改配置文件

vim /etc/init.d/jenkins 

在这里插入图片描述

查看jdk位置

which java

5.4 修改配置文件

修改端口是为了保证8080端口不冲突

vim /etc/sysconfig/jenkins

在这里插入图片描述

5.5 修改jenkins.service

vim /usr/lib/systemd/system/jenkins.service

在这里插入图片描述
两个配置文件端口保证一致 , 修改完之后重新载入配置

systemctl daemon-reload

服务自启动

systemctl enable jenkins

5.6 相关命令

/etc/init.d/jenkins start 启动  或者可以使用  systemctl start jenkins.service
/etc/init.d/jenkins stop 停止  或者可以使用  systemctl stop jenkins.service
/etc/init.d/jenkins restart 重启  或者可以使用  systemctl restart jenkins.service

5.7 初始化

在这里插入图片描述
密码在 :

/var/lib/jenkins/secrets/initialAdminPassword

这个里边 , 然后点击确定
然后会引导安装一些插件。这一步比较自由。你可以按照默认方式安装,也可以选择一些你认识的常
用插件安装。关键插件漏了没有关系,后续也可以再安装插件。
在这里插入图片描述
安装之后使用admin用户或者自己创建一个都行

5.8 核心插件配置

选择 Manage Jenkins-> Manage Plugins,进入插件管理页面。
在这里插入图片描述
在这里需要安装几个核心的插件。包括Git 、Git client、NodeJS Plugin、Maven integration
plugin。Jenkins重启的方式是直接在浏览器上访问restart接口。

http://192.168.154.148:8085/restart

5.9 核心组件配置

5.9.1 git

yum -y install git

5.9.2 mvn

首先在/usr/local新建一个maven文件夹

cd /usr/local
mkdir maven

在这里插入图片描述
下载

https://maven.apache.org/download.cgi

在这里插入图片描述

解压

tar zxvf apache-maven-3.9.0-bin.tar.gz

添加环境变量

vim /etc/profile
export MAVEN_HOME=/usr/local/maven/apache-maven-3.9.0
export PATH=$MAVEN_HOME/bin:$PATH

在这里插入图片描述
添加完之后刷新一下配置文件

source /etc/profile

执行mvn -v
在这里插入图片描述

5.93 Node.js

下载

wget https://nodejs.org/dist/v14.17.4/node-v14.17.4-linux-x64.tar.xz

解压

tar xf node-v14.17.4-linux-x64.tar.xz

配置环境变量

cd  node-v14.17.4-linux-x64
pwd

在这里插入图片描述
复制这个路径

vim /etc/profile

添加如下代码

export NODEJS_HOME=/home/software/node-v14.17.4-linux-x64
export PATH=$NODEJS_HOME/bin:$PATH

在这里插入图片描述
刷新权限

source /etc/profile

输入node -v 和 npm-v进行测试
在这里插入图片描述
到这里 GitLab+Jenkins的基础环境已经搭建完毕 , 下一篇文章将会说明如何基于GitLab+Jenkins快速实现CI\CD

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

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

相关文章

6、DDIM

简介 去噪扩散概率模型(DDPM)在没有对抗性训练的情况下已经实现了高质量的图像生成,但它们需要模拟马尔可夫链许多步骤才能生成样本。 例如,从DDPM采样50k张大小为32 32的图像需要大约20个小时,而从Nvidia 2080 Ti GPU上的GAN采样则需要不…

Vue:(三十五)路由vue-router

今天,我们开始学习vue中一个很关键的知识点,路由。理解vue的一个插件库,专门用来实现SPA应用单页web应用整个应用只有一个完整的页面点击页面中的导航连接不会刷新页面,只会做页面的局部更新数据需要通过ajax请求获取下来&#xf…

css制作动画(动效的序列帧图)

相信 animation 大家都用过很多,知道是 CSS3做动画用的。而我自己就只会在 X/Y轴 上做位移旋转,使用 animation-timing-function 规定动画的速度曲线,常用到的 贝塞尔曲线。但是这些动画效果都是连续性的。 今天发现个新功能 animation-timi…

【C语言】详讲qsort库函数

qsort函数介绍具体作用qsort函数是一种用于对不同类型数据进行快速排序的函数,排序算法有很多最常用的冒泡排序法仅仅只能对整形进行排序,qsort不同,排序类型不受限制,qsort函数的底层原理是一种快速排序.基本构造qsort( void* arr, int sz, int sizeof, cmp_code);…

【毕业设计】基于Java的五子棋游戏的设计(源代码+论文)

简介 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端…

IP协议+以太网协议

在计算机网络体系结构的五层协议中,第三层就是负责建立网络连接,同时为上层提供服务的一层,网络层协议主要负责两件事:即地址管理和路由选择,下面就网络层的重点协议做简单介绍~~ IP协议 网际协议IP是TCP/IP体系中两…

20230310英语学习

Some Narcissists Chase Status, Others Want to Win Admiration 自恋并非自尊心膨胀,那它因何而来? Narcissists often rub their friends and family the wrong way by bragging about their exploits, seemingly a symptom of an overinflated sense …

什么是AIGC?

目录前言一、什么是AIGC?1、什么是PGC?2、什么是UGC?3、什么是PUCG?4、什么是AIGC?二、总结前言 很明显,ChatGPT的爆火,带动了AIGC(AI-Generated Content)概念的火热。 …

DP算法:动态规划算法

步骤(1)确定初始状态(2)确定转移矩阵,得到每个阶段的状态,由上一阶段推到出来(3)确定边界条件。例题蓝桥杯——印章(python实现)使用dp记录状态,d…

为 Argo CD 应用程序指定多个来源

在 Argo CD 2.6 中引入多源功能之前,Argo CD 仅限于管理来自 单个 Git 或 Helm 存储库 的应用程序。用户必须将每个应用程序作为 Argo CD 中的单个实体进行管理,即使资源存储在多个存储库中也是如此。借助多源功能,现在可以创建一个 Argo CD 应用程序,指定存储在多个存储库…

ADS中导入SPICE模型

这里写目录标题在官网中下载SPICE模型ADS中导入SPICE模型在官网中下载SPICE模型 英飞凌官网 ADS中导入SPICE模型 点击option,设置导入选项 然后点击ok 如果destination选择当前的workspace,那么导入完成之后如下: (推荐使用…

API 网关日志的价值,你了解多少?

本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志。 作者钱勇,API7.ai 技术工程师,Apache APISIX Committer。 原文链接 网关日志的价值 在数字化时代,软件架构随着业务成…

单例模式之懒汉式

在上篇文章中,我们讲了单例模式中的饿汉式,今天接着来讲懒汉式。 1.懒汉式单例模式的实现 public class LazySingleton {private static LazySingleton instance null;// 让构造函数为private,这样该类就不会被实例化private LazySingleto…

unicode字符集与utf-8编码的区别,unicode转中文工具、中文转unicode工具(汉字)

在cw上报的报警信息中,有一个name字段的值是\u4eba\u4f53 不知道是啥,查了一下,是unicode编码,用下面工具转换成汉字就是“人体” 参考文章:https://tool.chinaz.com/tools/unicode.aspx 那么我很好奇,uni…

Web3中文|无聊猿Otherside元宇宙启动第二次旅行

3月9日消息,无聊猿Bored Ape Yacht Club母公司Yuga Labs公布了其Otherside元宇宙游戏平台第二次测试的最新细节。Yuga Labs公司称,“第二次旅行”将于3月25日举行,由四位Otherside团队长带领完成近两小时的游戏故事。本次旅行对Otherdeed NFT…

JavaScript String 字符串对象实例合集

文章目录JavaScript String 字符串对象实例合集返回字符串的长度为字符串添加样式返回字符串中指定文本首次出现的位置 - indexOf()方法查找字符串中特定的字符,若找到,则返回该字符 - match() 方法替换字符串中的字符 - replace()JavaScript String 字符…

1/4车、1/2车、整车悬架PID控制仿真合集

目录 前言 1. 1/4悬架系统 1.1数学模型 1.2仿真分析 2. 1/2悬架系统 2.1数学模型 2.2仿真模型 2.3仿真分析 3. 整车悬架系统 3.1数学模型 3.2仿真分析 参考文献 前言 前面几篇文章介绍了LQR、SkyHook、H2/H∞控制,接下来会继续介绍滑模、反步法、MPC、…

Web漏洞-SSRF漏洞(详细)

SSRF漏洞介绍:SSRF(Server-Side Request Forgery):服务器端请求伪造,该漏洞通常由攻击者构造的请求传递给服务端,服务器端对传回的请求未作特殊处理直接执行而造成的。一般情况下,SSRF攻击的目标是从外网无…

AidLux AI应用案例悬赏选题 | 纺织品表面瑕疵检测

AidLux AI 应用案例悬赏征集活动 AidLux AI 应用案例悬赏征集活动是AidLux推出的AI应用案例项目合作模式,悬赏选题将会持续更新。目前上新的选题涉及泛边缘、机器人、工业检测、车载等领域,内容涵盖智慧零售、智慧社区、智慧交通、智慧农业、智能家居等…

荧光染料IR-825 NHS,IR825 NHS ester,IR825 SE,IR-825 活性酯

IR825 NHS理论分析:中文名:新吲哚菁绿-琥珀酰亚胺酯,IR-825 琥珀酰亚胺酯,IR-825 活性酯英文名:IR825 NHS,IR-825 NHS,IR825 NHS ester,IR825 SECAS号:N/AIR825 NHS产品详…