在 CentOS 上部署 Jenkins 并实现持续集成
一 环境准备与安装
- 准备一台运行 CentOS 7/8/9 的服务器,建议至少 2 核 CPU、4GB 内存、20GB 磁盘,并确保网络稳定。
- 安装 Java(Jenkins 为 Java 应用):
- OpenJDK 11(通用稳定):sudo yum install -y java-11-openjdk-devel
- 或 OpenJDK 8(部分老项目兼容):sudo yum install -y java-1.8.0-openjdk-devel
- 添加 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 -y jenkins
- 启动并设置开机自启:
- sudo systemctl start jenkins
- sudo systemctl enable jenkins
- 访问与初始化:浏览器打开 http://服务器IP:8080,首次解锁密码在 /var/lib/jenkins/secrets/initialAdminPassword;随后可选择安装推荐插件并创建管理员账户。
二 基础配置与网络
- 防火墙放行端口(默认 8080):
- sudo firewall-cmd --permanent --add-port=8080/tcp
- sudo firewall-cmd --reload
- 修改 Jenkins 端口与运行用户(可选):编辑 /etc/sysconfig/jenkins
- JENKINS_PORT=“8080”(改为需要端口)
- JENKINS_USER=“jenkins”(确保该用户对 Jenkins 目录有合适权限)
- 重启使配置生效:sudo systemctl restart jenkins
- 插件与更新源优化:在 系统管理 → 插件管理 安装常用插件(如 Git、Maven、Docker 等);如需加速,可在 hudson.model.UpdateCenter.xml 配置国内镜像源。
三 创建 CI 任务与触发器
- Freestyle 任务(通用)
- 新建任务 → 选择 Freestyle 项目 → 源码管理选择 Git,填写仓库 URL 与分支(如 */main)。
- 构建触发器:
- 轮询 SCM:如 **H/5 * * * ***(每 5 分钟检查一次变更)
- Webhook:在代码托管平台(如 GitLab/GitHub)配置事件推送,指向 Jenkins 的 /github-webhook/ 或 /gitlab-webhook/(需安装对应插件并启用 CSRF 保护例外)。
- 构建环境:确保节点已安装 Git、Maven 等工具。
- 构建步骤:执行构建命令,如 mvn clean package 或自定义脚本。
- 构建后操作:归档产物(如 target/*.jar)、发布测试报告、发送通知等。
- Pipeline 任务(推荐,代码即配置)
- 在项目根目录创建 Jenkinsfile,示例:
pipeline {
agent any
stages {
stage(‘Checkout’) { steps { git url: ‘https://your-repo-url.git’, branch: ‘main’ } }
stage(‘Build’) { steps { sh ‘mvn -B -DskipTests clean package’ } }
stage(‘Test’) { steps { sh ‘mvn test’ } }
stage(‘Archive’) { steps { archiveArtifacts artifacts: ‘target/*.jar’, fingerprint: true } }
}
}
- 新建任务选择 Pipeline,在 Pipeline 配置中选择 Pipeline script from SCM,指向上述仓库与 Jenkinsfile。
四 与 Docker 集成与分布式构建
- Docker 集成(在 Jenkins 内构建与运行容器)
- 在 Jenkins 节点安装 Docker,并将 jenkins 用户加入 docker 组:sudo usermod -aG docker jenkins
- 在 系统管理 → 插件管理 安装 Docker 插件,在 系统设置 → Docker 添加 Docker 服务器 URL(如 unix:///var/run/docker.sock),测试连接成功后保存。
- 在任务中使用 Docker Pipeline 或直接在构建步骤执行 docker 命令,实现镜像构建、运行与清理。
- 分布式构建(多机并行)
- 在 系统管理 → 节点管理 新增 Agent 节点,在目标机器安装 Jenkins Agent 并启动连接;
- 在任务配置中指定 Agent 或使用 标签表达式 实现按标签调度,提高构建吞吐与资源隔离。
五 常见问题与优化建议
- Java 版本选择:新版本 Jenkins 建议使用 Java 11/17;若项目强依赖 Java 8,可继续使用 OpenJDK 8。
- 权限与目录:若修改了 JENKINS_USER,需同步调整 /var/lib/jenkins、/var/cache/jenkins、/var/log/jenkins 等目录属主与权限,避免启动失败或权限错误。
- 插件与更新:优先使用官方仓库与推荐插件集;国内环境可配置镜像源提升下载速度。
- 安全加固:启用 CSRF 保护、为 Jenkins URL 配置反向代理与 HTTPS、最小权限原则分配凭据与权限;Webhook 需正确配置 Secret 或 CSRF 豁免。