Python在Debian上如何配置持续集成
导读:在 Debian 上配置 Python 持续集成 一 环境准备 更新系统并安装基础工具: 执行:sudo apt update && sudo apt upgrade -y 安装:sudo apt install -y...
在 Debian 上配置 Python 持续集成
一 环境准备
- 更新系统并安装基础工具:
- 执行:
sudo apt update & & sudo apt upgrade -y - 安装:
sudo apt install -y git python3 python3-pip build-essential
- 执行:
- 建议启用 Python 虚拟环境 隔离依赖:
- 执行:
python3 -m venv .venv & & source .venv/bin/activate - 升级 pip:
python -m pip install --upgrade pip
- 执行:
- 可选:安装 Docker 以获得一致的构建与运行环境:
- 执行:
sudo apt install -y docker.io & & sudo systemctl enable --now docker
- 执行:
- 说明:上述基础环境为后续 Jenkins、本地脚本或容器化 CI 提供支撑。
二 方案一 Jenkins 自建 CI 服务器
- 安装 Jenkins(需要 Java 11):
- 执行:
sudo apt install -y openjdk-11-jdk - 导入密钥与源并安装:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.listsudo apt update & & sudo apt install -y jenkins
- 启动服务:
sudo systemctl start jenkins & & sudo systemctl enable jenkins - 访问控制台:打开浏览器进入 http://< 服务器IP> :8080,按向导完成解锁与插件安装(推荐安装 Git、Pipeline 等常用插件)。
- 执行:
- 创建流水线任务(Pipeline):
- 在 Jenkins 中新建 Pipeline 任务,选择 “Pipeline script from SCM”,SCM 选 Git,填写仓库地址与凭证,指定 Jenkinsfile 路径。
- 示例 Jenkinsfile(可直接使用并扩展):
pipeline { agent any environment { PYTHON = 'python3' } stages { stage('Checkout') { steps { git url: 'https://github.com/your-org/your-python-app.git', branch: 'main' } } stage('Setup') { steps { sh ''' python3 -m venv .venv . .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt ''' } } stage('Lint') { steps { sh ''' . .venv/bin/activate pip install -U flake8 flake8 src tests ''' } } stage('Test') { steps { sh ''' . .venv/bin/activate pip install -U pytest pytest-cov pytest --junitxml=reports/pytest.xml --cov=src --cov-report=xml:reports/coverage.xml ''' } } } post { always { junit 'reports/*.xml' cleanWs() } } }- 要点:
- 使用 venv 隔离依赖,避免污染系统 Python。
- 在 post 阶段归档测试报告,便于在 Jenkins 中查看趋势与结果。
- 要点:
三 方案二 GitHub Actions 云端 CI
- 适用场景:代码托管在 GitHub,无需自建服务器。
- 在项目根目录创建 .github/workflows/ci.yml:
name: Python CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install -U pytest pytest-cov - name: Lint run: | pip install -U flake8 flake8 src tests - name: Test run: | pytest --junitxml=reports/pytest.xml --cov=src --cov-report=xml:reports/coverage.xml - name: Upload coverage uses: codecov/codecov-action@v4 with: token: ${ { secrets.CODECOV_TOKEN } } # 可选 - 说明:
- 使用官方的 actions/setup-python 设置指定 Python 版本,在云端完成构建、测试与报告归档。
四 关键实践与排错要点
- 依赖与缓存:
- 使用 requirements.txt 或 pyproject.toml 管理依赖;在 CI 中对 pip 与缓存目录(如 ~/.cache/pip)进行缓存,可显著加速构建。
- 虚拟环境与权限:
- 始终在 venv 中安装依赖;在 Jenkins 中若使用 Docker 或需要访问系统资源,注意 jenkins 用户的权限与 sudo 策略,避免以 root 运行构建步骤。
- 报告与质量门禁:
- 统一输出 JUnit XML 与 覆盖率 XML,在 Jenkins 中归档并配置质量门禁;结合 flake8/ruff、pytest 与 coverage 形成“代码规范—单元测试—覆盖率”闭环。
- 多 Python 版本矩阵:
- 在 GitHub Actions 中使用 strategy.matrix 构建多个 Python 版本;在 Jenkins 可通过多 agent 或多 stage 并行覆盖版本矩阵。
- 安全与合规:
- 将 Secrets 存入 CI 平台凭据存储,避免明文;定期升级依赖并启用 Dependabot 或类似机制。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Python在Debian上如何配置持续集成
本文地址: https://pptw.com/jishu/767050.html
