温馨提示×

Ubuntu Python持续集成/持续部署怎么做

小樊
56
2025-08-19 16:28:31
栏目: 编程语言

在Ubuntu上实现Python项目的持续集成(CI)/持续部署(CD),可借助主流工具(如Jenkins、GitHub Actions等)自动化构建、测试和部署流程,以下是具体步骤及示例:

一、基础环境准备

  1. 安装Python和虚拟环境工具

    sudo apt update && sudo apt install python3 python3-pip python3-venv  # 安装Python 3及虚拟环境模块
    
  2. 创建虚拟环境并安装依赖

    python3 -m venv venv  # 创建虚拟环境
    source venv/bin/activate  # 激活环境
    pip install -r requirements.txt  # 安装项目依赖
    

二、选择持续集成工具

1. GitHub Actions(推荐,与GitHub深度集成)

适用场景:代码托管在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时,会自动运行测试,确保代码质量。

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集成和部署到服务器。
    
    
    

三、持续部署(CD)扩展

1. 部署到测试/生产环境

  • 示例:通过SSH部署到远程服务器
    在CI工具中添加部署步骤,使用scprsync传输文件到服务器,再通过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集成。

2. 自动化打包与发布

  • 打包为Python包
    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的团队

0