Ubuntu Python持续集成/持续部署怎么做
在Ubuntu上实现Python项目的持续集成(CI)/持续部署(CD),可借助主流工具(如Jenkins、GitHub Actions等)自动化构建、测试和部署流程,以下是具体步骤及示例:
一、基础环境准备
-
安装Python和虚拟环境工具
sudo apt update && sudo apt install python3 python3-pip python3-venv # 安装Python 3及虚拟环境模块
-
创建虚拟环境并安装依赖
python3 -m venv venv # 创建虚拟环境 source venv/bin/activate # 激活环境 pip install -r requirements.txt # 安装项目依赖
二、选择持续集成工具
1. GitHub Actions(推荐,与GitHub深度集成)
适用场景:代码托管在GitHub,需轻量级、易配置的CI/CD流程。
配置步骤:
- 在项目根目录创建
.github/workflows/ci.yml
文件,定义自动化流程:
说明:每次推送代码到GitHub时,会自动运行测试,确保代码质量。name: Python CI/CD on: [push, pull_request] # 触发条件:代码推送或拉取请求 jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # 拉取代码 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.8' # 指定Python版本 - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt # 安装依赖 - name: Run tests run: pytest # 执行测试(需提前安装pytest)
2. Jenkins(适合复杂项目,需服务器部署)
适用场景:团队协作、需集成Docker或复杂构建步骤。
配置步骤:
- 安装Jenkins:在Ubuntu上通过Docker运行Jenkins容器:
docker run -d -p 8080:8080 --name jenkins -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
- 配置Python环境:
- 在Jenkins中安装
Python Plugin
,创建虚拟环境步骤:pipeline { agent any stages { stage('Setup Python') { steps { sh 'python3 -m venv venv' sh 'source venv/bin/activate && pip install -r requirements.txt' } } stage('Run Tests') { steps { sh 'source venv/bin/activate && pytest' } } } }
**说明**:通过Jenkins Pipeline脚本定义构建、测试流程,支持Docker集成和部署到服务器。
- 在Jenkins中安装
三、持续部署(CD)扩展
1. 部署到测试/生产环境
- 示例:通过SSH部署到远程服务器
在CI工具中添加部署步骤,使用scp
或rsync
传输文件到服务器,再通过SSH执行部署脚本(如重启服务):
工具支持:Jenkins可通过# 示例:通过SSH部署到服务器 scp -r ./dist user@server:/path/to/deploy ssh user@server "cd /path/to/deploy && source venv/bin/activate && nohup python app.py &"
Publish Over SSH
插件实现,GitHub Actions可通过actions/ssh
集成。
2. 自动化打包与发布
- 打包为Python包:
适用场景:将Python库发布到PyPI,供其他项目安装使用。python setup.py sdist bdist_wheel # 生成whl包 twine upload dist/* # 上传到PyPI(需提前配置API Token)
四、关键工具对比
工具 | 优势 | 适用场景 | 学习成本 |
---|---|---|---|
GitHub Actions | 与GitHub无缝集成,配置简洁 | 个人项目、开源项目 | 低 |
Jenkins | 插件丰富,支持复杂流程 | 企业级项目、多环境部署 | 中高 |
GitLab CI/CD | 与GitLab深度集成,支持Docker | 使用GitLab的团队 | 中 |
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!