在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項目配置完整的持續集成流程,實現代碼變更后的自動化測試與部署。