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指令并行执行测试(如单元测试与集成测试并行),减少构建时间;