Jenkins CI/CD 完全实战指南:自动化部署一条龙
Jenkins 简介
Jenkins 是最流行的开源 CI/CD 工具,能够自动化构建、测试和部署流程。本文详细介绍 Jenkins 的安装、配置和实战用法。
Jenkins 核心概念
- Job/Project - 构建任务
- Build - 一次具体的构建执行
- Pipeline - 流水线,定义完整的构建流程
- Stage - 流水线的阶段
- Step - 具体的构建步骤
Jenkins 安装
方式一:Docker 安装(推荐)
docker run -d -p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
--name jenkins \
jenkins/jenkins:lts
方式二:Ubuntu/Debian 安装
# 添加 Jenkins 仓库
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
# 安装 Jenkins
sudo apt update
sudo apt install jenkins
# 启动 Jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
Jenkins Pipeline 语法
Pipeline 是 Jenkins 2.0 最重要的功能,使用声明式语法:
pipeline {
agent any
environment {
DOCKER_IMAGE = 'myapp'
DOCKER_REGISTRY = 'registry.example.com'
}
stages {
stage('Checkout') {
steps {
checkout scm
sh 'git log -1 --oneline'
}
}
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
post {
always {
junit 'test-results/*.xml'
}
}
}
stage('Build Docker Image') {
steps {
sh '''
docker build -t $DOCKER_IMAGE:$BUILD_NUMBER .
docker tag $DOCKER_IMAGE:$BUILD_NUMBER $DOCKER_IMAGE:latest
'''
}
}
stage('Deploy to Staging') {
when {
branch 'develop'
}
steps {
sh 'kubectl apply -f k8s/staging/'
}
}
stage('Deploy to Production') {
when {
branch 'main'
}
steps {
input message: 'Deploy to Production?', ok: 'Deploy'
sh 'kubectl apply -f k8s/production/'
}
}
}
post {
success {
echo 'Build Successful!'
emailext subject: 'Build Success', body: 'Build #${env.BUILD_NUMBER} succeeded'
}
failure {
echo 'Build Failed!'
emailext subject: 'Build Failed', body: 'Build #${env.BUILD_NUMBER} failed'
}
}
}
Jenkinsfile 最佳实践
- 使用声明式语法 - 更易读和维护
- 环境变量分离 - 不同环境使用不同配置
- 缓存依赖 - 加速构建
- 并行执行 - 减少构建时间
- 超时设置 - 防止构建挂起
Credentials 管理
在 Jenkins 中安全管理敏感信息:
pipeline {
environment {
DOCKER_CREDS = credentials('docker-hub-credentials')
}
stages {
stage('Push Image') {
steps {
sh '''
echo $DOCKER_CREDS_USR
echo $DOCKER_CREDS_PSW | docker login -u $DOCKER_CREDS_USR --password-stdin
docker push myapp:latest
'''
}
}
}
}
分布式构建
Jenkins Master-Slave 架构:
# 在 Slave 节点执行
java -jar agent.jar -url http://master:8080/ -secret [secret-token] -name agent1
pipeline {
agent {
label 'docker-build'
}
stages {
stage('Build') {
steps {
sh 'docker build .'
}
}
}
}
Webhook 集成
配置 GitHub Webhook 触发构建:
# 在 GitHub 仓库设置
# Settings -> Webhooks -> Add webhook
# Payload URL: http://your-jenkins:8080/github-webhook/
# Content type: application/json
# Events: Push events
常用插件推荐
- Pipeline - 流水线支持
- Git - Git 版本控制
- Docker Pipeline - Docker 构建支持
- Kubernetes - K8s 部署支持
- Credentials Binding - 凭据管理
- JUnit - 测试报告
- Email Extension - 邮件通知
总结
Jenkins 是企业级 CI/CD 的首选工具,掌握 Jenkins Pipeline 语法和最佳实践,能够显著提升开发效率,实现持续集成和持续部署。
参考资源:Jenkins 官方文档
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。






