在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 # 安装项目依赖
适用场景:代码托管在GitHub,需轻量级、易配置的CI/CD流程。
配置步骤:
.github/workflows/ci.yml
文件,定义自动化流程: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)
说明:每次推送代码到GitHub时,会自动运行测试,确保代码质量。适用场景:团队协作、需集成Docker或复杂构建步骤。
配置步骤:
docker run -d -p 8080:8080 --name jenkins -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
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集成和部署到服务器。
scp
或rsync
传输文件到服务器,再通过SSH执行部署脚本(如重启服务):# 示例:通过SSH部署到服务器
scp -r ./dist user@server:/path/to/deploy
ssh user@server "cd /path/to/deploy && source venv/bin/activate && nohup python app.py &"
工具支持:Jenkins可通过Publish Over SSH
插件实现,GitHub Actions可通过actions/ssh
集成。python setup.py sdist bdist_wheel # 生成whl包
twine upload dist/* # 上传到PyPI(需提前配置API Token)
适用场景:将Python库发布到PyPI,供其他项目安装使用。工具 | 优势 | 适用场景 | 学习成本 |
---|---|---|---|
GitHub Actions | 与GitHub无缝集成,配置简洁 | 个人项目、开源项目 | 低 |
Jenkins | 插件丰富,支持复杂流程 | 企业级项目、多环境部署 | 中高 |
GitLab CI/CD | 与GitLab深度集成,支持Docker | 使用GitLab的团队 | 中 |