Gitlab: Python项目CI/CD实践

时间:2024-04-25 21:24:54

目录

1. 说明

2. 准备工作

2.1 服务器

2.2 开发机hosts文件 

2.3 项目

3. 步骤过程

3.1 建仓Fastapi T1

3.2 开发机测试构建与推送 ​编辑

3.3 在工作站添加gitlab-runner

3.4 提交代码,查看Pipelines结果

3.5 观察部署情况

4. 参考


1. 说明

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

2. 准备工作

2.1 服务器

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

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

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: 私有化部署_gitlab私有化部署

-Gitlab: PHP项目CI/CD实践

Error "Host key verification failed." - GitLab CI/CD - GitLab Forum