Gitlab: Python项目CI/CD实践

目录

[1. 说明](#1. 说明)

[2. 准备工作](#2. 准备工作)

[2.1 服务器](#2.1 服务器)

[2.2 开发机hosts文件](#2.2 开发机hosts文件)

[2.3 项目](#2.3 项目)

[3. 步骤过程](#3. 步骤过程)

[3.1 建仓Fastapi T1](#3.1 建仓Fastapi T1)

[3.2 开发机测试构建与推送 ​编辑](#3.2 开发机测试构建与推送 编辑)

[3.3 在工作站添加gitlab-runner](#3.3 在工作站添加gitlab-runner)

[3.4 提交代码,查看Pipelines结果](#3.4 提交代码,查看Pipelines结果)

[3.5 观察部署情况](#3.5 观察部署情况)

[4. 参考](#4. 参考)


1. 说明

  • 分别以一个fastapi应用和一个前后端分离的kinit项目为例,制定从构建,测试到最终部署(CI/CD)的实现步骤
  • 代码管理与自动化部署基于Gitlab系统,部署到装有宝塔的目标服务器以容器方式运行
  • 使用流程:
  1. 提交代码到代码仓库
  2. gitlab根据.gitlab-ci.yml脚本规则,拉起对应的gitlab-runner工作站构建, 测试, 部署
  3. 发布服务器做反向代理设置以供访问

2. 准备工作

2.1 服务器

- 为简单起见,Gitlab Runner工作站与发布服务器合在一起使用

- 关于Gitlab服务器的私有化部署,见前文《 Gitlab: 私有化部署_gitlab私有化部署-CSDN博客

2.2 开发机hosts文件
复制代码
192.168.0.130 host001.dev.ia
192.168.0.130 gitlab.dev.ia

192.168.0.131 host002.dev.ia
192.168.0.131 fastapi-t1.dev.ia
192.168.0.131 kinit-api-t1.dev.ia
192.168.0.131 kinit-admin-t1.dev.ia
2.3 项目

|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 名称 | fastapi-t1 |
| 自定义域名 | fastapi-t1.dev.ia |
| 仓库路径 | http://host001.dev.ia:18181/dev1/fastapi-t1.git |
| 镜像路径 | host001.dev.ia:5050/dev1/fastapi-t1:latest |
| 目录结构 | ./fastapi-t1/ ├── .gitlab-ci.yml ├── Dockerfile ├── README.md ├── app │ ├── init.py │ ├── main.py │ ├── static │ ├── templates │ ├── utils ├── pytest.ini ├── requirements.txt └── tests ├── init.py ├── conftest.py └── test_main.py |
| 运行命令行 | uvicorn app.main:app --reload |
| Dockerfile | 见附件 |
| .gitlab-ci.yml文件 | 见附件 |

|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 名称 | kinit 后端api应用 |
| 自定义域名 | kinit-api-t1.dev.ia |
| 仓库路径 | http://host001.dev.ia:18181/dev1/kinit-api-t1.git |
| 镜像路径 | host001.dev.ia:5050/dev1/kinit-api-t1:latest |
| 目录结构 | kinit-api ├── .gitlab-ci.yml ├── README.md ├── alembic ├── alembic.ini ├── application ├── apps ├── core ├── db ├── logs ├── main.py ├── requirements.txt ├── scripts ├── static ├── temp └── utils |
| .gitlab-ci.yml文件 | 见附件 |

|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 名称 | kinit 前端应用 |
| 自定义域名 | kinit-admin-t1.dev.ia |
| 仓库路径 | http://host001.dev.ia:18181/dev1/kinit-admin-t1.git |
| 镜像路径 | host001.dev.ia:5050/dev1/kinit-admin-t1:latest |
| 目录结构 | kinit-admin ├── .gitlab-ci.yml ├── LICENSE ├── README.md ├── index.html ├── node_modules ├── package.json ├── plop ├── plopfile.js ├── pnpm-lock.yaml ├── postcss.config.js ├── prettier.config.js ├── public ├── scripts ├── src ├── stylelint.config.js ├── tsconfig.json ├── types ├── uno.config.ts └── vite.config.ts |
| .gitlab-ci.yml文件 | 见附件 |

3. 步骤过程

3.1 建仓Fastapi T1

如图:镜像仓库ready

3.2 开发机测试构建与推送
3.3 在工作站添加gitlab-runner

说明:当代码提交后,遇到含有tag=python的.gitlab-ci.yml时调用该runner执行任务

* gitlab-runner所在的工作站需预先安装pip工具

3.4 提交代码,查看Pipelines结果

3.5 观察部署情况

设置子域名与反向代理后访问 http://fastapi-t1.dev.ia/docs

4. 参考

-Gitlab: PHP项目CI/CD实践

相关推荐
Csvn22 分钟前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽1 小时前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
用户556918817533 小时前
#从脚本到独立程序:Python + Playwright 批量抓取的完整踩坑记录
python·自动化运维
兵慌码乱17 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei20 小时前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python
aqi001 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用
Csvn1 天前
`functools.lru_cache` —— 一行代码搞定缓存加速
后端·python
金銀銅鐵2 天前
[Python] 从《千字文》中随机挑选汉字
后端·python
cup112 天前
[技术复盘] Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
python·ai·环境变量·ci·nuitka·skill