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