1. 首页 > IT综合教程 > 正文

IT教程FG269-IT系统DevOps与CI/CD pipeline

1. DevOps概述

DevOps是一种软件开发和IT运维的实践,旨在缩短开发周期,提高部署频率,确保可靠的发布。它强调开发团队和运维团队之间的协作和沟通,通过自动化工具和流程来实现持续集成和持续部署。更多学习教程www.fgedu.net.cn

# 检查系统环境
# uname -a
Linux server 3.10.0-1160.el7.x86_64 #1 SMP Wed Aug 26 15:27:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

# 检查Docker状态
# systemctl status docker
● docker.service – Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-03-30 10:00:00 CST; 1h ago
Docs: https://docs.docker.com
Main PID: 1234 (dockerd)
CGroup: /system.slice/docker.service
└─1234 /usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock

# 检查Git状态
# git –version
git version 2.27.0

DevOps核心原则:自动化、持续集成、持续部署、监控和反馈、协作和沟通。

2. CI/CD概述

CI/CD是持续集成(Continuous Integration)和持续部署(Continuous Deployment)的缩写,是DevOps的核心实践。CI/CD通过自动化构建、测试和部署流程,提高开发效率和代码质量。学习交流加群风哥微信: itpux-com

# 持续集成流程
1. 开发者提交代码到Git仓库
2. CI工具(如Jenkins)自动拉取代码
3. 自动构建项目
4. 自动运行测试
5. 生成构建报告

# 持续部署流程
1. 构建成功后,自动部署到测试环境
2. 运行集成测试
3. 部署到预生产环境
4. 运行验收测试
5. 部署到生产环境

3. Jenkins安装

Jenkins是一种开源的CI/CD工具,用于自动化构建、测试和部署流程。

# 安装Java
# yum install -y java-1.8.0-openjdk

# 安装Jenkins
# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# rpm –import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# yum install -y jenkins

# 启动Jenkins服务
# systemctl start jenkins
# systemctl enable jenkins

# 查看Jenkins状态
# systemctl status jenkins
● jenkins.service – LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; generated)
Active: active (running) since Wed 2026-03-30 10:00:00 CST; 1h ago
Docs: man:systemd-sysv-generator(8)
Process: 1234 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
└─1235 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war –logfile=/var/log/jenkins/jenkins.log –webroot=/var/cache/jenkins/war –httpPort=8080 –debug=5 –handlerCountMax=100 –handlerCountMaxIdle=20

# 查看Jenkins初始密码
# cat /var/lib/jenkins/secrets/initialAdminPassword
1234567890abcdef1234567890abcdef

4. Jenkins配置

Jenkins配置包括插件安装、系统设置、凭据管理等。

# 安装Jenkins插件
# 访问 http://fgedudb:8080 并登录
# 安装推荐插件和必要插件(如Git、Pipeline、Docker等)

# 配置Git
# 在Jenkins管理界面中,进入”系统管理” > “全局工具配置”
# 配置Git路径:/usr/bin/git

# 配置Docker
# 安装Docker插件
# 在Jenkins管理界面中,进入”系统管理” > “系统设置”
# 配置Docker服务器:unix:///var/run/docker.sock

# 配置凭据
# 在Jenkins管理界面中,进入”凭据” > “系统” > “全局凭据”
# 添加Git凭据(fgedu/密码或SSH密钥)
# 添加Docker Hub凭据

风哥风哥提示:Jenkins插件是扩展Jenkins功能的重要方式,建议安装必要的插件,如Git、Pipeline、Docker、Kubernetes等。

5. Jenkins Pipeline

Jenkins Pipeline是一种通过代码定义CI/CD流程的方式,支持声明式和脚本式两种语法。

# 创建Jenkinsfile
# cat Jenkinsfile
pipeline {
agent any
stages {
stage(‘Checkout’) {
steps {
git branch: ‘main’, url: ‘https://github.com/example/project.git’
}
}
stage(‘Build’) {
steps {
sh ‘mvn clean package’
}
}
stage(‘Test’) {
steps {
sh ‘mvn test’
}
}
stage(‘Deploy’) {
steps {
sh ‘kubectl apply -f k8s/deployment.yaml’
}
}
}
post {
success {
echo ‘构建成功!’
}
failure {
echo ‘构建失败!’
}
}
}

# 在Jenkins中创建Pipeline项目
# 进入Jenkins管理界面
# 点击”新建项目”
# 选择”Pipeline”
# 配置项目名称和描述
# 在”Pipeline”部分,选择”Pipeline script from SCM”
# 配置Git仓库地址和Jenkinsfile路径
# 保存配置

# 运行Pipeline
# 点击”立即构建”
# 查看构建日志

6. Git集成

Git是一种分布式版本控制系统,与CI/CD工具集成可以实现代码的自动拉取和构建。

# 创建Git仓库
# git init
Initialized empty Git repository in /home/user/project/.git/

# 添加文件
# echo “Hello World” > README.md
# git add README.md
# git commit -m “Initial commit”
[main (root-commit) 1234567] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 README.md

# 推送到远程仓库
# git remote add origin https://github.com/example/project.git
# git push -u origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 216 bytes | 216.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/example/project.git
* [new branch] main -> main
Branch ‘main’ set up to track remote branch ‘main’ from ‘origin’.

# 配置Git Webhook
# 在GitHub仓库中,进入”Settings” > “Webhooks”
# 添加Webhook:http://jenkins-server:8080/github-webhook/
# 选择事件:Push
# 保存配置

7. Docker集成

Docker与CI/CD工具集成可以实现容器化应用的自动构建和部署。

# 创建Dockerfile
# cat Dockerfile
FROM openjdk:8-jdk-alpine
COPY target/app.jar /app.jar
ENTRYPOINT [“java”, “-jar”, “/app.jar”]

# 构建Docker镜像
# docker build -t example/app .
Sending build context to Docker daemon 10.24kB
Step 1/3 : FROM openjdk:8-jdk-alpine
—> 1234567890ab
Step 2/3 : COPY target/app.jar /app.jar
—> 9876543210cd
Step 3/3 : ENTRYPOINT [“java”, “-jar”, “/app.jar”]
—> 6543219870ef
Successfully built 6543219870ef
Successfully tagged example/app:latest

# 推送Docker镜像
# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don’t have a Docker ID, head over to https://hub.docker.com to create one.
Username: example
Password:
Login Succeeded

# docker push example/app
The push refers to repository [docker.io/example/app]
1234567890ab: Pushed
9876543210cd: Pushed
6543219870ef: Pushed
latest: digest: sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef size: 948

8. Kubernetes集成

Kubernetes与CI/CD工具集成可以实现容器化应用的自动部署和管理。

# 创建Kubernetes部署文件
# cat k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
– name: app
image: example/app:latest
ports:
– containerPort: 8080

# 创建Kubernetes服务文件
# cat k8s/service.yaml
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
app: app
ports:
– port: 80
targetPort: 8080
type: NodePort

# 部署到Kubernetes
# kubectl apply -f k8s/deployment.yaml
# kubectl apply -f k8s/service.yaml

# 查看部署状态
# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
app-deployment 3/3 3 3 1m

# 查看服务状态
# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
app-service NodePort 10.100.200.100 80:30080/TCP 1m
kubernetes ClusterIP 10.96.0.1 443/TCP 1h

9. CI/CD最佳实践

遵循CI/CD最佳实践可以提高构建和部署的效率和可靠性。

# 使用Pipeline as Code
# 将CI/CD流程定义为代码,存储在版本控制系统中

# 实现自动化测试
# 在构建过程中运行单元测试、集成测试和端到端测试

# 使用环境变量管理配置
# 在Jenkins中配置环境变量,避免硬编码敏感信息

# 实现蓝绿部署
# 同时运行两个版本的应用,通过路由切换实现零 downtime 部署

# 实现回滚机制
# 在部署失败时自动回滚到之前的稳定版本

# 监控和日志
# 集成监控工具(如Prometheus、Grafana)和日志工具(如ELK)

# 安全扫描
# 在构建过程中集成安全扫描工具,检测代码和依赖项的安全漏洞

10. DevOps工具链

DevOps工具链包括版本控制、CI/CD、容器化、编排、监控等工具。

# 版本控制工具
– Git: 分布式版本控制系统
– GitHub: Git代码托管平台
– GitLab: 集成了CI/CD的Git代码托管平台

# CI/CD工具
– Jenkins: 开源CI/CD工具
– GitLab CI: GitLab内置的CI/CD工具
– CircleCI: 云端CI/CD工具
– Travis CI: 云端CI/CD工具

# 容器化工具
– Docker: 容器化平台
– Docker Compose: 多容器应用编排工具

# 编排工具
– Kubernetes: 容器编排平台
– Docker Swarm: Docker内置的编排工具

# 监控工具
– Prometheus: 监控系统
– Grafana: 数据可视化平台
– ELK Stack: 日志管理平台

# 配置管理工具
– Ansible: 自动化配置管理工具
– Puppet: 配置管理工具
– Chef: 配置管理工具

# 基础设施即代码工具
– Terraform: 基础设施即代码工具
– CloudFormation: AWS基础设施即代码工具

DevOps工具选择风哥建议:根据项目需求和团队规模选择合适的工具,优先选择开源、社区活跃的工具,注重工具之间的集成和兼容性。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息