在CentOS上配置Python持续集成前,需确保系统具备正确的Python环境和依赖工具。
sudo yum install epel-release -y # 添加EPEL源(提供Python3包)
sudo yum install python3 python3-pip -y # 安装Python3及pip
验证安装:python3 --version # 确认Python版本(如3.6.8+)
pip3 --version # 确认pip版本
pip3 install --upgrade pip setuptools -i https://pypi.doubanio.com/simple/ # 使用国内镜像加速
pip3 install virtualenv virtualenvwrapper # 安装虚拟环境工具
echo "export WORKON_HOME=~/.virtualenvs" >> ~/.bashrc # 配置虚拟环境目录
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc # 加载虚拟环境工具
source ~/.bashrc # 使配置生效
mkvirtualenv myenv -p python3 # 创建名为myenv的虚拟环境
workon myenv # 激活虚拟环境
Jenkins是CentOS上常用的开源CI/CD工具,支持Python项目的自动化构建、测试与部署。
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # 添加Jenkins源
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 导入Jenkins密钥
sudo yum upgrade -y # 升级系统包
sudo yum install jenkins java-1.8.0-openjdk-devel -y # 安装Jenkins及Java(Jenkins依赖Java)
sudo systemctl daemon-reload # 重新加载系统服务
sudo systemctl start jenkins # 启动Jenkins服务
sudo systemctl enable jenkins # 设置开机自启
访问http://<服务器IP>:8080,按提示完成初始化配置(输入管理员密码、安装推荐插件)。Manage Jenkins > Manage Plugins,安装以下插件:
Pipeline脚本定义了CI/CD的具体流程(构建、测试、部署),通常存放在项目根目录下。以下是一个Python项目的示例:
pipeline {
agent any // 使用任意可用节点执行任务
stages {
stage('Checkout') { // 拉取代码
steps {
git branch: 'main', url: 'https://github.com/yourusername/your-python-repo.git' // 替换为你的仓库地址
}
}
stage('Set up Python') { // 设置Python环境(可选,若使用虚拟环境可省略)
steps {
sh 'python3 -m venv venv' // 创建虚拟环境
sh 'source venv/bin/activate && pip install --upgrade pip' // 激活并升级pip
}
}
stage('Install Dependencies') { // 安装项目依赖
steps {
sh 'pip install -r requirements.txt' // 根据requirements.txt安装依赖
}
}
stage('Run Tests') { // 运行测试
steps {
sh 'python -m pytest tests/' // 使用pytest运行测试(需提前安装pytest)
// 或使用unittest:sh 'python -m unittest discover tests/'
}
}
stage('Deploy') { // 部署(仅主分支触发)
when {
branch 'main' // 仅在main分支提交时触发
}
steps {
sh 'scp -r dist/* user@production-server:/var/www/your-app/' // 将构建产物复制到生产服务器
sh 'ssh user@production-server "cd /var/www/your-app && pip install -r requirements.txt && systemctl restart your-app.service"' // 在服务器上安装依赖并重启服务
}
}
}
post {
always { // 无论成功失败都执行的步骤
junit 'reports/*.xml' // 收集测试报告(需测试框架生成XML格式报告)
}
failure { // 失败时发送通知(如邮件、钉钉)
echo 'Pipeline failed!'
// 可集成邮件插件或其他通知工具
}
}
}
New Item,输入Job名称(如python-ci),选择Pipeline类型,点击OK。Git,填写仓库URL(如https://github.com/yourusername/your-python-repo.git)和分支(如main)。Jenkinsfile,即项目根目录下的文件)。Poll SCM(定时轮询SCM,如H/5 * * * *表示每5分钟检查一次)、Webhook(代码推送时自动触发,需配置Git钩子)或Manual(手动触发)。Poll SCM或Webhook,代码推送至仓库后会自动触发构建。Build Now手动启动构建。Test Result(测试报告)、Console Output(详细日志)。ssh免密登录、scp权限)。venv)隔离项目依赖,避免全局环境污染。coverage.py生成测试覆盖率报告,提升代码质量。通过以上步骤,即可在CentOS上为Python项目配置完整的持续集成流程,实现代码变更后的自动化测试与部署。