基于 jenkins 的持续集成、持续部署方案

工具介绍

  • python3.12 + fastapi 0.92.0 + uvicorn 开发部署web项目;
  • git + gitee 实现代码版本管理;
  • jenkins + docker 实现持续集成、持续部署;
  • centos7 作为jenkins服务器 & 部署服务器;有条件的可以再启动一台服务器作为部署测试的服务器;

项目代码仓库

仓库地址

这里已准备部分web项目代码;后续可以持续开发、持续集成、持续部署;

编写Dockfile脚本:

bash 复制代码
# 指定基础镜像
FROM python

# 拷贝项目数据   到容器中.../home/ 
RUN mkdir /home/web_app
COPY src/* /home/web_app
COPY tests/* /home/web_app
COPY requirements.txt /home/web_app
COPY setup.py /home/web_app

# *****装python依赖*****
# 切换工作目录
WORKDIR /home/web_app
RUN python3 -m pip install -r requirements.txt


# 端口映射  同 -p 8083:8083
EXPOSE 8083
# 目录映射  同 -v /home/web_app:/home/web_app
VOLUME /home/web_app

# 执行前台命令,防止端口被占用
CMD ["python3", "app.py"]

CentOS7 环境准备及构建测试

iso镜像安装
问题解决及软件安装

bash 复制代码
# 安装git 
sudo yum install -y git
# 配置ssh公钥
ssh-keygen -t rsa  # 回车
# 在~/.ssh/id_rsa.pub 复制公钥,并配置在gitee个人仓库

# 拉取代码仓库开发分支
git clone -b develop git@gitee.com:laufing/web_app.git

# 进入仓库目录
cd web_app
# 执行构建,生成docker image
docker build -t "web_app_image" .
# -t 执行构建镜像的名称
# . 在当前目录下找Dockerfile 脚本  

# 构建完成后查看
docker images
# 启动容器
docker run -d -p 8083:8083 -v /root/web_app:/home/web_app --name=web_app web_app_image

# 查看容器是否启动
[root@centos web_app]# docker ps
CONTAINER ID   IMAGE           COMMAND            CREATED         STATUS         PORTS                                       NAMES
d975824bfca6   web_app_image   "python3 app.py"   4 minutes ago   Up 4 minutes   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp   web_app

局域网内通过http地址访问:

linux下的8083端口被占用时,容器会启动失败!!!

bash 复制代码
# 查看端口
lsof -i:8083  # 或者netstat -ano | grep -iE "8083"
# 杀掉
kill -s SIGTERM pid1 pid2 ...

创建 jenkins 项目,配置构建

  • centos中启动jenkins
bash 复制代码
# 使用java 虚拟机启动 
java -jar jenkins.war --httpPort=8081 --httpListenAddress=0.0.0.0
  • windows下载浏览器中访问http://ip:8081
  • 创建项目:New Item
相关推荐
Fcy64836 分钟前
Linux下 进程控制(一) —— 进程的创建、终止和等待
linux·运维·elasticsearch·进程控制·进程创建、终止、等待
耀耀_很无聊6 小时前
09_Jenkins安装JDK环境
java·运维·jenkins
MaximusCoder6 小时前
等保测评命令——Centos Linux
linux·运维·经验分享·python·安全·centos
卷Java7 小时前
Linux服务器Docker部署OpenClaw:腾讯云/阿里云/VPS安装避坑指南
linux·运维·服务器
原来是猿8 小时前
Linux-【动静态库】
linux·运维·服务器
深圳市恒讯科技9 小时前
云服务器怎么选?从CPU、内存到IOPS的零基础选型手册
运维·服务器
艾莉丝努力练剑10 小时前
【脉脉】AI创作者崛起:掌握核心工具,在AMA互动中共同成长
运维·服务器·c++·人工智能·安全·企业·脉脉
未佩妥剑,已入江湖12 小时前
docker Windows下安装
运维·windows·docker·容器
LXY_BUAA13 小时前
《嵌入式操作系统》_高级字符设备驱动_20260316
linux·运维·服务器·驱动开发
顶妙WMS海外仓管理系统13 小时前
Shopify卖家破910万,海外仓如何对接Shopify独立站?
运维·产品运营