在 CentOS 上集成 Jenkins 与常用工具的实操指南
一 环境准备与基础安装
- 安装 JDK 8/11(Jenkins 2.x 建议使用 Java 11),并配置 JAVA_HOME。
- 添加 Jenkins 官方 YUM 源并安装:
- 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 enable --now jenkins
- 开放防火墙端口(如 8080):firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload
- 首次访问 http://<服务器IP>:8080,按提示完成解锁与插件安装。
二 与 Git 和 Maven 的集成
- 安装工具:sudo yum install -y git maven;在 Jenkins 的 Manage Jenkins → Global Tool Configuration 中配置 JDK、Git、Maven 的安装路径。
- 配置 Git 凭据:
- HTTPS:使用 Username with password;
- SSH:在 Jenkins 服务器生成密钥对,将公钥添加到 Git 仓库(GitHub/GitLab/Gitee),Jenkins 中用 SSH Username with private key。
- 创建任务(Freestyle 或 Pipeline):
- 源码管理选择 Git,填写仓库 URL 与分支(如 */main);
- 构建步骤选择 Invoke top-level Maven targets(如 mvn clean package);
- 构建后操作可 Archive artifacts、Publish JUnit test result report。
- 触发方式:
- 轮询 SCM:如 **H/5 * * * ***;
- Webhook:在 GitHub/GitLab/Gitee 仓库设置 Webhook 指向 http:///github-webhook/(或相应插件提供的路径)。
三 与 Docker 的集成
- 宿主机安装 Docker 并将 jenkins 用户加入 docker 组:
- sudo yum install -y docker && sudo systemctl enable --now docker
- sudo usermod -aG docker jenkins && newgrp docker
- 方式 A(推荐)Docker-in-Docker:运行容器时挂载 Docker 套接字
- docker run -d --name jenkins -p 8080:8080 -p 50000:50000 \
-v /var/run/docker.sock:/var/run/docker.sock -v jenkins-data:/var/jenkins_home jenkins/jenkins:lts
- 方式 B 直接在宿主机使用 Docker:确保 Jenkins 能执行 docker 命令(上一步的 docker 组)。
- 插件与流水线:安装 Docker Pipeline、Docker Compose 插件;在 Pipeline 中使用 docker.build、withRegistry、docker.image().inside 等步骤;推送到镜像仓库时使用 withCredentials 管理凭据。
四 远程部署与通知集成
- 远程部署(SSH 到目标主机):
- 安装 Publish Over SSH 插件;在 系统配置 中添加目标主机的 SSH 连接信息;
- 在 Job 的构建后操作选择 Send build artifacts over SSH,配置源文件、目标路径与执行命令(如 systemctl restart app)。
- 容器化应用发布到 Tomcat:
- 安装 Deploy to container 插件;在 Tomcat 的 tomcat-users.xml 中创建具备 manager-script 角色的账号;
- 在 Job 构建后使用 Deploy 插件将 WAR 部署到目标 Tomcat。
- 通知集成:
- Slack:安装 Slack Notification 插件,在系统配置添加 Webhook URL,在 Job 的构建后操作添加通知;
- GitHub/Gitee:安装 GitHub/Gitee 插件,配置 API Token,在构建后操作发送状态回仓库。
五 安全与排错要点
- 权限最小化:Jenkins 以 jenkins 用户运行,避免 root;Docker 集成时谨慎挂载 /var/run/docker.sock,必要时采用代理或 rootless Docker。
- 凭据管理:优先使用 Credentials Binding 与 SSH 密钥,避免明文密码;镜像仓库推送使用 withCredentials。
- 防火墙与 SELinux:开放 8080/50000 等端口;如启用 SELinux,按需设置布尔值或策略以允许 Jenkins 执行 Docker/SSH。
- 日志排查:
- Jenkins:/var/log/jenkins/jenkins.log
- Docker:journalctl -u docker -f
- 构建日志:在 Job 页面查看 Console Output 定位失败阶段。