DevOps学习笔记

一、DevOps介绍

DevOps,字面意思是Development &Operations的缩写,也就是开发&运维虽然宇面意思只涉及到了开发团队和运维团队,其实QA测试团队也是参与其中的。

网上可以查看到Dsyoms的符号类似于一个无穷大的符号。

整体的软件开发流程包括:

  • PLAN: 开发团队根据客户的目标制定开发计划
  • CODE: 根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中,
  • BUILD: 编码完成后,需要将代码构建并且运行。
  • TEST: 成功构建项目后,需要测试代码是否存在8UG或错误。
  • DEPLOY: 代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
  • OPERATE: 运维团队将代码部要到生产环境中。
  • MONITOR: 项目部署上线后,需要持续的监控产品,
  • INTEGRATE: 然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是pevQps的核心,即持续集成、持续部署。

核心:Jenkins,代码构建、测试、发布。

最终可以给pevops下一个定义: DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

自动化的工具协作和沟通来完成软件的生命周期管理。

二、docker安装

docker version

docker-compose version

保证有这两个

防火墙

关闭命令:

systemctl stop firewalld

docker 构建gitlab服务

mkdir /usr/local/docker/gitlab_docker

--创建构建脚本名称

vi docker-compose.yml

--查看gitlab版本号

docker search gitlab

--拉取镜像

docker pull gitlab/gitlab-ce:latest

docker-compose.yml

复制代码
version: '3.1'
services:
 gitlab:
	image: 'gitlab/gitlab-ce:latest'   ##镜像
	container_name: gitlab      ##容器名称
	restart: always  #容器启动,gitlab启动
	environment:
		GITLAB_OMNIBUS_CONFIG: |
			external_url 'http://192.168.11.11:8929'     #当前linux服务器,页面路径
			gitlab_rails['gitlab_shell_ssh_port'] = 2224  #
	ports:    #端口号映射
		- '8929:8929'
		- '2224:2224'
	volumes:
		- './config:/etc/gitlab'
		- './logs:/var/log/gitlab'
		- './data:/var/opt/gitlab'

启动容器

docker-compose up -d

查看日志

docker-compose logs -f

页面访问路径:

http://192.168.11.11:8929

进入gitlab容器查看密码

docker exex -it giltbla bash

cat /etc/gitlab/initial_root_password

root登录,修改密码即可。

安装Docker所需要的依赖

复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
 添加Docker Yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo
#查看能安装的版本号
yum list docker-ce --showduplicates | sort
 安装指定版本Dokcer26.1.0 
sudo yum install docker-ce-26.1.0-1.el7 docker-ce-cli-26.1.0-1.el7 containerd.io docker-buildx-plugin docker-compose-plugin 

开机自启动和启用Docker

复制代码
sudo systemctl enable docker
sudo systemctl start docker

#Docker环境变更

复制代码
vim /etc/docker/daemon.json
{
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"50m","max-file":"1"
    }
}

#设置虚拟机最大内存和核心
 修改文件
sudo vim /etc/sysctl.conf
 添加参数
vm.max_map_count = 262144
 重新加载/etc/sysctl.conf配置
sysctl -p

三、安装jenkins

安装jenkins-----------

maven准备

复制一个虚拟机出来,修改网卡信息:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR修改为需要的。

重启网卡

systemctl restart network

安装jdk和maven

maven setting.xml设置一下镜像,新增一个阿里云或者其他镜像。

maven setting.xml设置一下jdk8编译插件。

CI/CD可以理解为:

复制代码
CI过程即是通过Jenkins将代码拉取、构建、制作镜像交给测试人员测试。
  	持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试。
CD过程即是通过Jenkins将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。
  	持续交付:让经过持续集成的代码可以进行手动部署。
   	持续部署:让可以持续交付的代码随时随地的自动化部署。

安装 推荐LTS版本:

下载对应版本的Jenkins,此次使用的是支持jdk8的最后一个版本 jenkins-2.346.x

https://www.jenkins.io/download/

https://hub.docker.com/r/jenkins/jenkins/tags?page=5\&page_size=\&ordering=\&name=2.346

拉取命令,复制页面:

docker pull jenkins/jenkins:2.346.1-lts-jdk8

mkdir /usr/local/docker/jenkins_docker

vim docker-compose.yml

复制代码
version: "3.1"
services:
	jenkins:
	image: jenkins//jenkins:2.346.1-lts-jdk8
	container_name: jenkins
	ports:
		- 8080:8080
		- 50000:50000
	volumes:
		- ./data/:/var/jenkins_home/

赋权

chmod -R 777 data

---启动

docker-compose up -d

--查看日志

docker logs -f jenkins

日志中会打印密码

重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,

需要重新设置下载地址为国内镜像站

数据卷data目录下:

xml 复制代码
# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
	<site>
		<id>default</id>
		<url>https://updates.jenkins.io/update-center.json</url>
	</site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
	<site>
		<id>default</id>
		<url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
	</site>
</sites>
# 清华大学的插件源也可以
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

docker exec -it jenkins bash

--查看密码

cat /var/jenkins_home/secrets/initialAdminPassword

访问页面:

页面:IP:8080

选择插件来安装(选择项默认即可),如果安装不成功,失败也点击继续。

解决方案1:修改源。

方案2:https://plugins.jenkins.io/ 手动下载安装。

创建一个用户信息:root。

开始使用jenkins。

四、jenkins使用

插件管理:

下载失败的插件查看:

页面菜单栏:dashboard------>manage jenkins------>manage plugins

available:

需下载:git Parameter (拉取代码)、Publish Over SSH(连接到服务器)

安装必要的插件,如Jenkins汉化-Localization: Chinese (Simplified)、Git Parameter Plug-in,、 Git Client Plugin、NodeJS Plugin、Publish over SSH等插件:

点击 install without restart

拉取代码需要git,代码构建需要maven和JDK。

把jdk和maven也弄到容器内部,在页面进行指定目录。

全局配置:

bashboard------>manage jenkins------>global Tool Configuration


系统配置:

bashboard------>manage jenkins------>configure System

最下面 publish over ssh,SSH Server(使用账号密码的模式连接),也可以使用秘钥私钥。

远程文件夹:即远程进去的默认目录。

添加远程服务器密码:

测试连接。

可以参考:https://mp.weixin.qq.com/s/P5DSyZ2Mxsmm6TniAbp6YA

配置好应用。

然后构建。

console output可以查看日志。

构建完成后,会在docker目录workspace下看到代码。

代码构建


再次构建,打包。

容器内会workspace/项目下/有会有一个target的打包目录。

jar包推送到目标服务器。

构建后的操作

再次构建,会把jar传输到服务器。

相关推荐
hkNaruto10 小时前
【DevOps】基于Nexus3部署Docker内网私有代理仓库docker proxy
docker·devops·nexus3
JanelSirry10 小时前
DevOps是什么,有什么作用,一般用来干嘛
linux·运维·devops
测试开发Kevin3 天前
详解Jenkins 的 Declarative Pipeline中post 语法
jenkins·devops
NineData4 天前
NineData云原生智能数据管理平台新功能发布|2025年9月版
数据库·云原生·devops·ninedata·数据库迁移·数据复制·风险sql管控
学习的周周啊4 天前
一人AI自动化开发体系(Cursor 驱动):从需求到上线的全流程闭环与实战清单
运维·人工智能·自动化·ai编程·全栈·devops·cursor
qq_312920114 天前
从零搭建企业级DevOps流水线
运维·devops
陈哥聊测试7 天前
各角色如何从DevOps中受益?
程序员·自动化运维·devops
许泽宇的技术分享11 天前
Ansible核心架构深度剖析:从源码看IT自动化的“简单“哲学
python·ansible·自动化运维·devops·it基础设施