1. 準備Linux環境
確保Linux系統(如Ubuntu/Debian/CentOS)滿足Jenkins基礎要求:安裝Java(推薦JDK 11+,通過java -version驗證),并配置網絡(允許Jenkins默認端口8080通過防火墻,如Ubuntu用sudo ufw allow 8080、CentOS用sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload)。
2. 安裝Jenkins
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc,配置倉庫echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list,更新并安裝sudo apt update && sudo apt install jenkins;sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo,導入密鑰sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key,安裝sudo yum install jenkins。sudo systemctl start jenkins(立即啟動),sudo systemctl enable jenkins(開機自啟)。3. 配置Jenkins基礎設置
http://<服務器IP>:8080,輸入初始密碼(sudo cat /var/lib/jenkins/secrets/initialAdminPassword獲?。?;4. 配置Jenkins與版本控制集成
若使用Git管理代碼,需添加Git憑證(Manage Jenkins → Credentials → System → Global credentials,點擊“Add Credentials”,選擇“Git Username with password”或“SSH Username with private key”,輸入Git賬號信息);若使用GitHub/GitLab,可配置Webhook(Manage Jenkins → Configure System,添加GitHub/GitLab服務器,填寫API Token,實現代碼推送自動觸發構建)。
5. 編寫Pipeline腳本
Pipeline是Jenkins實現CI/CD的核心,推薦使用聲明式Pipeline(結構清晰、易維護),腳本需包含agent(指定執行節點,如any表示任意節點)、stages(定義多階段流程)、steps(具體執行命令)。示例如下:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your-repo/your-project.git' // 拉取代碼
}
}
stage('Build') {
steps {
sh './mvnw clean package' // Maven構建(Java項目)
// 或 sh './gradlew build' // Gradle構建
archiveArtifacts 'target/*.jar' // 歸檔構建產物(如JAR文件)
}
}
stage('Test') {
parallel {
stage('Unit Test') {
steps { sh './mvnw test' } // 單元測試
}
stage('SonarQube Analysis') {
steps {
withSonarQubeEnv('sonar-server') { // 集成SonarQube代碼質量分析
sh './mvnw sonar:sonar'
}
}
}
}
}
stage('Deploy') {
when { branch 'main' } // 僅main分支觸發生產部署
steps {
script {
if (params.RUN_TESTS) { // 參數化構建:是否執行測試
sh "./run_cypress_tests ${params.ENVIRONMENT}" // 運行端到端測試
}
sh 'kubectl apply -f k8s/deployment.yaml' // 使用Kubernetes部署(需提前配置kubectl)
// 或 docker.withRegistry('https://registry.example.com', 'docker-creds') { // Docker部署
// docker.image("myapp:${env.BUILD_ID}").push()
// }
}
}
}
}
post {
always {
junit 'target/surefire-reports/*.xml' // 發布測試報告
}
failure {
mail to: 'team@example.com', subject: 'Jenkins構建失敗', body: '請檢查構建日志' // 失敗通知
}
}
}
將腳本保存為Jenkinsfile,放入項目根目錄(與代碼一起提交到版本控制)。
6. 創建Jenkins Job并關聯Pipeline
deploy-app),選擇“Pipeline”,點擊“OK”;https://github.com/your-repo/your-project.git)和分支(如main);Jenkinsfile(腳本路徑,默認為項目根目錄);H/5 * * * *表示每5分鐘檢查一次)或“GitHub hook trigger for GITScm polling”(Webhook觸發);7. 部署到目標環境
根據項目需求選擇部署方式:
docker build(構建鏡像)、docker push(推送至鏡像倉庫)、kubectl apply(更新Kubernetes Deployment)步驟;deploy.sh腳本(如停止舊服務、復制新JAR文件、啟動服務),在Pipeline中通過sh './deploy.sh'執行;deploy.yml,包含git clone、install dependencies、start application任務),在Pipeline中通過ansiblePlaybook步驟調用。8. 監控與優化
--memory參數調整Jenkins JVM堆內存(如-Xmx2048m),避免內存不足;使用parallel指令并行執行測試(如單元測試與集成測試并行),減少構建時間;