一个人活成一个团队:python的django项目devops实战

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 项目协作,基础版人数 不受限
云效 DevOps 测试管理,基础版人数 不受限
简介: DevOps通过自动化的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠。本文通过一个python的django个人博客应用进行了DevOps的实战,通过DevOps拉通开发和运维,通过应用云效的DevOps平台实现自动化“软件交付”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,提交研发交付效率。作为个人项目也是可以应用devops提高效率。

对于开发团队来说提高软件交付的速度和质量是一个永恒的话题,对于个人开发者来说同样如此。作为一个码农,一定会有几个自己私有的小项目,从需求管理到开发到测试到部署运维都得要自己来,将自己一个人活成一个团队。

DevOps(Development和Operations的组合),旨在通过自动化、协作和共享责任来提高软件开发和运维的效率、质量和安全性。作为一个人的团队,也可通过devops实践来提高对自己项目的效率和质量,使产品持续开发、持续集成、持续测试、持续部署、持续监控,非常频繁地发布新版本。本文就以一个实际的python的django项目来运用阿里的云效devops平台来进行实战。
在这里插入图片描述
DevOps平台工具有很多,最常见的就是大名顶顶的Jenkins,作为个人开发者要准备相应的硬件资源,还要要自己维护一套Jenkins有点麻烦。这里直接就选择成熟的阿里云效devops https://devops.aliyun.com/ ,这套平台基础版是免费的,对于个人开发者来说已经够用了。

一、需求规划

个人项目虽小,但是也得要有相应的规划,至少得有个需求清单来进行需求的规划和跟踪,哪些需求已经完成了,哪些还需要进行开发做到自己心中有数。
可以在云效的项目协作中创建一个项目进行管理。
在这里插入图片描述

在这里我创建了一个xiejava的博客项目
在这里插入图片描述

在这里我们就可以将自己规划的需求录入进来做好自己的需求跟踪清单
在这里插入图片描述

可以规划自己的版本,将需求跟踪清单里的需求纳入到版本迭代计划。
在这里插入图片描述

在迭代计划中可以看到这个迭代要完成的需求清单。
在这里插入图片描述

二、代码管理

即使是最简单的项目,建议还是通过代码仓库进行代码的版本管理,我的代码是放到码云https://gitee.com/xiejava/ishareblog 进行托管的,也可以托管到云效自己的代码管理仓库。
有了代码仓库,可以通过在云效构建流水线来进行自动构建、自动测试、自动部署了。

三、创建流水线

在云效中创建ishareblog的自动发布流水线,整个流水线包括获取代码、测试、构建、部署。
在这里插入图片描述

1、配置流水线源

流水线源可以配置云效自己的代码库,也可以配置其他的代码库,如我里是配置的码云代码库。
可以开启代码源触发,开启后一旦代码库有提交操作,就会自动触发流水线工作。
在这里插入图片描述

需要说明的是,如果是外部的代码仓库,需要在外部的代码仓库中添加Webhook触发设置

如我的是码云的仓库,就要在码云的仓库中添加Webhook的配置
在这里插入图片描述

四、自动测试

在测试环节,配置了python代码扫描和Python单元测试。
python代码扫描用的是云效默认的配置
比较麻烦的是Python单元测试,Python单元测试需要在Python项目中写测试用例,还要配置测试命令。
在Python项目中写测试用例见《django集成pytest进行自动化单元测试实战》。
配置测试命令就是在测试服务其中进行发布测试的所有shell命令
在这里插入图片描述

配置测试命令就是在测试服务其中进行发布测试的所有shell命令
作为一个django的项目测试命令参考如下:

# pytest default command
# 安装mysql客户端
sudo apt-get update
sudo apt-get install -y libmysqlclient-dev

# 安装新版本的SQLite3
# wget https://www.sqlite.org/2024/sqlite-autoconf-3460000.tar.gz

# 安装依赖
sudo pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip install pysqlite3 -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip install pysqlite3-binary -i https://pypi.tuna.tsinghua.edu.cn/simple

# 替换Django的sqlite3的驱动文件
sudo cp -f /root/workspace/ishareblog_J18t/change_set/base.py  /usr/local/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py

# 初始化数据库
sudo python manage.py makemigrations --settings=ishareblog.settings_test
sudo python manage.py migrate --settings=ishareblog.settings_test

# 启动django服务
sudo nohup python manage.py runserver 8000 --settings=ishareblog.settings_test &

PORT=8000  # 替换为您想要检查的端口号
NEXT_COMMAND="sudo pytest --html=report/index.html"  # 通过pytest进行单元测试

until nc -z localhost $PORT; do
    echo "Port $PORT is not ready - waiting..."
    curl http://localhost:8000
    sleep 1
done

echo "Port $PORT is ready"
eval "$NEXT_COMMAND"

ps aux | grep python


# 通过pytest进行单元测试
#sudo pytest --html=report/index.html

pkill -f manage.py

ps aux | grep python

因为在单元测试中还做了接口测试,这里会要启动djang服务,进行接口测试,测试完成后还要停止服务。
可以在流水线执行完后查看扫描报告和测试报告
在这里插入图片描述

扫描报告
代码扫描报告,报出来的大部分是格式规范的问题。
在这里插入图片描述

测试报告
自动化测试报告是通过pytest测试完成形成的报告。
在这里插入图片描述

五、自动构建

自动构建将会将构建好的制品打包上传至构建服务器上。
在这里插入图片描述

六、自动部署

在这里插入图片描述

也可以配置部署后的通知邮件,比如部署成功或失败后发邮件通知。

在这里插入图片描述

最后通过统计报表可以看到流水线近段期间的执行情况

在这里插入图片描述

七、总结

DevOps通过自动化的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠。本文通过一个python的django个人博客应用进行了DevOps的实战,通过DevOps拉通开发和运维,通过应用云效的DevOps平台实现自动化“软件交付”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,提交研发交付效率。作为个人项目也是可以应用devops提高效率。


博客地址:http://xiejava.ishareread.com/

相关实践学习
流水线运行出错排查难?AI帮您智能排查
本实验将带您体验云效流水线Flow的智能排查能力,只需短短1-2分钟,即可体验AI智能排查建议。
ALPD云架构师系列 - 云原生DevOps36计
如何把握和运用云原生技术,撬动新技术红利,实现持续、安全、高效和高质量的应用交付,并提升业务的连续性和稳定性,这是云原生时代持续交付共同面对的机会和挑战。本课程由阿里云开发者学堂和阿里云云效共同出品,是ALPD方法学云架构师系列的核心课程之一,适合架构师、企业工程效能负责人、对DevOps感兴趣的研发、测试、运维。 课程目标 前沿技术:了解云原生下DevOps的正确姿势,享受云原生带来的技术红利 系统知识:全局视角看软件研发生命周期,系统学习DevOps实践技能 课程大纲: 云原生开发和交付:云研发时代软件交付的挑战与云原生工程实践 云原生开发、运行基础设施:无差别的开发、运行环境 自动部署:构建可靠高效的应用发布体系 持续交付:建立团队协同交付的流程和流水线 质量守护:构建和维护测试和质量守护体系 安全保障:打造可信交付的安全保障体系 建立持续反馈和持续改进闭环
目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
303 7
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
2月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
306 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
2月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
2月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
2月前
|
存储 分布式计算 测试技术
Python学习之旅:从基础到实战第三章
总体来说,第三章是Python学习路程中的一个重要里程碑,它不仅加深了对基础概念的理解,还引入了更多高级特性,为后续的深入学习和实际应用打下坚实的基础。通过这一章的学习,读者应该能够更好地理解Python编程的核心概念,并准备好应对更复杂的编程挑战。
109 12
|
2月前
|
存储 数据采集 监控
Python文件操作全攻略:从基础到高级实战
本文系统讲解Python文件操作核心技巧,涵盖基础读写、指针控制、异常处理及大文件分块处理等实战场景。结合日志分析、CSV清洗等案例,助你高效掌握文本与二进制文件处理,提升程序健壮性与开发效率。(238字)
304 1
|
2月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
497 1
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
262 0
|
2月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
359 0

推荐镜像

更多