在 Debian 上使用 Jenkins 搭建 CI/CD 的完整步骤
一 环境准备与安装
- 更新系统并安装 Java 11(Jenkins 常用且稳定),验证版本:
- 命令:
sudo apt update && sudo apt install -y openjdk-11-jdk
- 验证:
java -version
- 添加 Jenkins 官方 APT 仓库 并安装:
- 导入密钥:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- 添加源:
echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
- 安装与启动:
sudo apt update && sudo apt install -y jenkins
- 开机自启:
sudo systemctl enable --now jenkins
- 检查状态:
sudo systemctl status jenkins
- 如启用防火墙(UFW),放行 8080 端口:
二 首次访问与初始化配置
- 在浏览器访问:http://<服务器IP>:8080
- 解锁 Jenkins:查看初始管理员密码
- 命令:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
- 完成安装向导:
- 选择 Install suggested plugins(或按需自定义)
- 创建 管理员账户 与 Jenkins URL
- 进入管理界面后,建议安装常用插件:Pipeline、Git、Docker、Kubernetes CLI、Credentials Binding 等,以便后续 CI/CD 使用
三 全局工具与凭据配置
- 全局工具(Manage Jenkins → Global Tool Configuration):
- JDK:取消“Install automatically”,路径示例 /usr/lib/jvm/java-11-openjdk-amd64
- Git:可自动安装或指定 /usr/bin/git
- Maven(可选):启用自动安装或设置安装目录
- 全局环境变量(Manage Jenkins → Configure System):
- 可设置如 JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64,统一构建环境
- 凭据管理(Manage Jenkins → Credentials):
- 添加 SSH 私钥(用于拉取私有仓库)或 GitHub Personal Access Token
- 在任务中使用“Username with password”或“SSH Username with private key”类型引用凭据
四 创建第一个 CI/CD 流水线
- 新建任务:选择 Pipeline
- 定义方式:选择 Pipeline script from SCM,SCM 选 Git
- 填写仓库 URL(HTTPS 或 SSH)
- 指定 Jenkinsfile 路径(如根目录)
- 示例 Jenkinsfile(Node.js,可按需替换为 Maven/Python 等)
- 说明:拉取代码 → 安装依赖 → 构建 → 测试 → 仅在 main 分支部署到 Kubernetes
- 参考:
pipeline {
agent any
stages {
stage('Checkout') {
steps { git branch: 'main', url: 'https://github.com/your-repo/your-project.git' }
}
stage('Build') {
steps { sh 'npm install'; sh 'npm run build' }
}
stage('Test') {
steps { sh 'npm test -- --ci' }
}
stage('Deploy') {
when { branch 'main' }
steps {
sh 'kubectl apply -f k8s/deployment.yaml'
sh 'kubectl rollout status deployment/myapp'
}
}
}
post {
success { echo 'Pipeline succeeded.' }
failure { echo 'Pipeline failed.' }
}
}
- 触发方式:
- 手动:在任务页面点击 Build Now
- 自动:在 GitHub 仓库 Settings → Webhooks → Add webhook
- Payload URL:http://<服务器IP>:8080/github-webhook/
- 事件:选择 Just the push event
五 安全与运维最佳实践
- 安全加固:
- 启用 CSRF 保护 与 RBAC(最小权限模型)
- Git 使用 SSH 密钥 或 PAT,凭据统一托管在 Jenkins
- 限制代理/节点启动权限,隔离构建环境
- 性能与扩展:
- 构建多且耗时较长时,引入 Jenkins Agent 分布式构建
- 维护与可用性:
- 定期 更新 Jenkins 与插件,及时修复安全漏洞
- 定期 备份 $JENKINS_HOME(/var/lib/jenkins)
- 按需更换 插件更新站点镜像 提升下载速度