如何在CentOS上快速部署Jenkins,实现高效自动化构建的详细步骤?
- 内容介绍
- 文章标签
- 相关推荐
在 CentOS 程序上快速部署 Jenkins 并实现高效自动化建立。往往会遇到以下痛点:
- 依赖安装繁琐,容易出现版本冲突。
- 防火墙和 SELinux 配置不当导致访问受限。
- 初始管理员密码易被忘记或泄露。
- 插件管理不当会导致程序变慢或崩溃。
- 缺乏统一的备份与恢复方案,业务停机时风险高。
一、准备工作:程序更新与基础依赖
步骤 1:更新程序
bash sudo yum update -y
步骤 2:安装 OpenJDK
bash sudo yum install java-11-openjdk-devel -y java -version # 验证安装成功
步骤 3:安装 Git 与可选 Docker
bash sudo yum install git -y # 可选:Docker 用于容器化建立与部署 sudo yum install docker-ce docker-ce-cli containerd.io -y sudo systemctl start docker && sudo systemctl enable docker
二、添加 Jenkins 官方仓库并安装
步骤 1:下载仓库配置文件并导入 GPG 密钥
bash wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
步骤 2:安装 Jenkins 并开启服务
bash sudo yum install jenkins -y sudo systemctl start jenkins sudo systemctl enable jenkins # 开机自启
防火墙与 SELinux 调整
Maven 和 Nginx 等常用端口开放示例:
# 打开 HTTP/HTTPS 服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 如需要开启 JENKINS 默认端口
sudo firewall-cmd --permanent --add-port=8080/tcp
# 重载防火墙规则
sudo firewall-cmd --reload
# SELinux 常见禁用方法
# setenforce 0
# 永久禁用:
# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
# reboot
管理员账户安全设置
# 初次访问 JENKINS 时会提示输入初始管理员密码。默认方法:
cat /var/lib/jenkins/secrets/initialAdminPassword
# 建议立即修改为强密码,并开启 HTTPS:
# 在 /etc/sysconfig/jenkins 中添加:
JENKINS_ARGS="--httpPort=80" # 或者使用 SSL 配置
# 或者使用官方插件生成 self-signed cert 并配置 HTTPS。
三、Jenkins 基础配置 – 插件与全局工具集成
- 登录 Jenkins Web UI
- A. 安装推荐插件包:
- - Git Plugin - Maven Integration Plugin - Docker Pipeline - Pipeline Utility Steps - Email Extension Plugin - Credentials Binding Plugin - Blue Ocean
可以一次性批量安装。说起来,
# Example Jenkinsfile
pipeline {
agent any
environment {
MVN_HOME = tool name: 'Maven',type: 'maven'
JA_HOME = tool name: 'Java',type: 'jdk'
}
stages {
stage {
steps { checkout scm }
}
stage {
steps { sh "${MVN_HOME}/bin/mvn clean package" }
}
stage {
steps { sh "${MVN_HOME}/bin/mvn test" }
}
stage {
when { branch 'main' } // Only on main branch
steps {
sh '''
docker build -t myapp:${BUILD_NUMBER} .
docker push registry.example.com/myapp:${BUILD_NUMBER}
'''
}
}
stage {
steps { sh './scripts/deploy_staging.sh' }
}
}
post {
success { slackSend channel: '#ci'。message: "✅ Build succeeded for ${env.JOB_NAME}" }
failure { email notifications } // 自定义邮件函数
}
}
四、自动化部署脚本示例——痛点二方法
# deploy_staging.sh 示例脚本
#!/bin/bash
set -e
REPO=registry.example.com/myapp:$BUILD_NUMBER
echo "Pulling image ${REPO}"
docker pull ${REPO}
echo "Stopping old container"
docker stop myapp || true && docker rm myapp || true
echo "Running new container"
docker run -d \
--name myapp \
--restart unless-stopped \
-v /opt/app/config:/opt/app/config \
${REPO}
echo "Reloading Nginx"
systemctl reload nginx
echo "Deployment complete."
五、备份与恢复策略——痛点五方法
- $JENKINS_HOME 默认方法:/var/lib/jenkins
- bckup.sh 脚本示例:
# bckup.sh – 每日凌晨执行 cron job
#!不过,/bin/bash
DATE=$
BACKUP_DIR=/backups/jenkins/${DATE}
mkdir -p ${BACKUP_DIR}
tar czf ${BACKUP_DIR}/jenkins_home_${DATE}.tar.gz /var/lib/jenkins/*
chmod 700 ${BACKUP_DIR}/jenkins_home_${DATE}.tar.gz
echo "Backup completed for ${DATE}"
# restore.sh – 从指定日期恢复数据
#!/bin/bash
if;n echo "Usage: $0 YYYY-MM-DD";exit 1,fi
DATE=$1
SRC=/backups/jenkins/${DATE}/jenkins_home_${DATE}.tar.gz
if;n echo "Backup not found!
",exit 1;fi
echo "Stopping Jenkins..."
systemctl stop jenkins
echo "Restoring data..."
tar xzf $SRC -C /
echo "Starting Jenkins..."
systemctl start jenkins
echo "Restore completed."
六、常见故障排查
| 错误信息或症状 | 原因 | 快速排查 & 修复建议 |
|---|
A. Jenkins 无法启动
- 检查日志 /var/log/messages 与 /var/log/jnlpx.log 是否有内存不足或端口占用报错。- 若出现 Could not find java executable确认 JA_HOME 环境变量已正确设置并已重新启动。B. 插件冲突导致 UI 卡顿或报错 NoClassDefFoundError
- 前往 Manage> Manage Plugins 卸载最近升级的插件或使用 命令行卸载。说起来,C. 建立任务持续卡在某一步
- 查看 是否已满磁盘;检查网络代理是否阻断 Maven 仓库访问;调低 MEN_OPTS="-Xmx512m" 避免 OOM。D. 部署后 Nginx 重载失败
- 确认 /etc/nginx/conf.d/*.conf 正确引用新容器 IP 或域名;查看 /var/log/nginx/error.log 获取详细错误信息。E. 邮件通知无法发送
- 检查 SMTP 设置是否被防火墙阻断;尝试手动运行 sendmail .
Z. 数据恢复失败
- 确认 backup 文件完整且未损坏;若是压缩包异常,可尝试逐个解压验证文件完整性。 |
✅ 常规检查清单:\
\
-
LVM &swap 大小足够,硬盘空间>= 当前使用量 + 容量预留。
\
-
`systemctl status jenkins.service` 输出无错误。
\
-
`netstat -tulpn | grep :8080` 能看到 Jenkins 正在监听。
\
-
`cat ~/.ssh/id_rsa.pub | ssh-keygen ...` 确保凭据已上传至 Git 仓库。\
\
提示一下 • 持续监控 • 日志审计 • 自动备份 • 安全加固都是实现高效自动化建立少不了的环节。按理说,请根据业务规模适配资源分配。并结合 CI/CD 常用方法进行细粒度权限控制和流水线调整。
老实说,
在 CentOS 程序上快速部署 Jenkins 并实现高效自动化建立。往往会遇到以下痛点:
-
依赖安装繁琐,容易出现版本冲突。
-
防火墙和 SELinux 配置不当导致访问受限。
-
初始管理员密码易被忘记或泄露。
-
插件管理不当会导致程序变慢或崩溃。
-
缺乏统一的备份与恢复方案,业务停机时风险高。
一、准备工作:程序更新与基础依赖
步骤 1:更新程序

bash
sudo yum update -y
步骤 2:安装 OpenJDK
bash
sudo yum install java-11-openjdk-devel -y
java -version # 验证安装成功
步骤 3:安装 Git 与可选 Docker

bash
sudo yum install git -y
# 可选:Docker 用于容器化建立与部署
sudo yum install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker && sudo systemctl enable docker
二、添加 Jenkins 官方仓库并安装
步骤 1:下载仓库配置文件并导入 GPG 密钥
bash
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
步骤 2:安装 Jenkins 并开启服务
bash
sudo yum install jenkins -y
sudo systemctl start jenkins
sudo systemctl enable jenkins # 开机自启
防火墙与 SELinux 调整
Maven 和 Nginx 等常用端口开放示例:
# 打开 HTTP/HTTPS 服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 如需要开启 JENKINS 默认端口
sudo firewall-cmd --permanent --add-port=8080/tcp
# 重载防火墙规则
sudo firewall-cmd --reload
# SELinux 常见禁用方法
# setenforce 0
# 永久禁用:
# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
# reboot
管理员账户安全设置
# 初次访问 JENKINS 时会提示输入初始管理员密码。默认方法:
cat /var/lib/jenkins/secrets/initialAdminPassword
# 建议立即修改为强密码,并开启 HTTPS:
# 在 /etc/sysconfig/jenkins 中添加:
JENKINS_ARGS="--httpPort=80" # 或者使用 SSL 配置
# 或者使用官方插件生成 self-signed cert 并配置 HTTPS。
三、Jenkins 基础配置 – 插件与全局工具集成
-
登录 Jenkins Web UI
-
A. 安装推荐插件包:
-
- Git Plugin
- Maven Integration Plugin
- Docker Pipeline
- Pipeline Utility Steps
- Email Extension Plugin
- Credentials Binding Plugin
- Blue Ocean
可以一次性批量安装。说起来,
-
B. 配置全局工具:
-
- 在 “Manage Jenkins” → “Global Tool Configuration” 中添加 Java、Maven、Git 等方法。如 Maven 安装在 /opt/maven,则填写对应的 JAHOME 与 MENHOME。
-
C. 配置凭据:
-
- 在 “Credentials” 中添加 GitHub/GitLab 的 SSH Key 或 Token,确保流水线能无障碍拉取代码。
-
D. 设置程序邮箱通知:
-
- 在 “Configure System” → “Extended Email Notification” 填写 SMTP 服务地址,以便建立失败及时告警。
-
E. 创建第一个 Pipeline 项目:
-
- 新建 Item → Pipeline,命名为 “AutoBuild”。- 在 Pipeline Script 下选择 “Pipeline script from SCM”,指向 Git 仓库中的 Jenkinsfile。
# Example Jenkinsfile
pipeline {
agent any
environment {
MVN_HOME = tool name: 'Maven',type: 'maven'
JA_HOME = tool name: 'Java',type: 'jdk'
}
stages {
stage {
steps { checkout scm }
}
stage {
steps { sh "${MVN_HOME}/bin/mvn clean package" }
}
stage {
steps { sh "${MVN_HOME}/bin/mvn test" }
}
stage {
when { branch 'main' } // Only on main branch
steps {
sh '''
docker build -t myapp:${BUILD_NUMBER} .
docker push registry.example.com/myapp:${BUILD_NUMBER}
'''
}
}
stage {
steps { sh './scripts/deploy_staging.sh' }
}
}
post {
success { slackSend channel: '#ci'。message: "✅ Build succeeded for ${env.JOB_NAME}" }
failure { email notifications } // 自定义邮件函数
}
}
四、自动化部署脚本示例——痛点二方法
# deploy_staging.sh 示例脚本
#!/bin/bash
set -e
REPO=registry.example.com/myapp:$BUILD_NUMBER
echo "Pulling image ${REPO}"
docker pull ${REPO}
echo "Stopping old container"
docker stop myapp || true && docker rm myapp || true
echo "Running new container"
docker run -d \
--name myapp \
--restart unless-stopped \
-v /opt/app/config:/opt/app/config \
${REPO}
echo "Reloading Nginx"
systemctl reload nginx
echo "Deployment complete."
五、备份与恢复策略——痛点五方法
-
$JENKINS_HOME 默认方法:/var/lib/jenkins
-
bckup.sh 脚本示例:
# bckup.sh – 每日凌晨执行 cron job
#!不过,/bin/bash
DATE=$
BACKUP_DIR=/backups/jenkins/${DATE}
mkdir -p ${BACKUP_DIR}
tar czf ${BACKUP_DIR}/jenkins_home_${DATE}.tar.gz /var/lib/jenkins/*
chmod 700 ${BACKUP_DIR}/jenkins_home_${DATE}.tar.gz
echo "Backup completed for ${DATE}"
-
=恢复脚本 restore.sh :
# restore.sh – 从指定日期恢复数据
#!/bin/bash
if;n echo "Usage: $0 YYYY-MM-DD";exit 1,fi
DATE=$1
SRC=/backups/jenkins/${DATE}/jenkins_home_${DATE}.tar.gz
if;n echo "Backup not found!
",exit 1;fi
echo "Stopping Jenkins..."
systemctl stop jenkins
echo "Restoring data..."
tar xzf $SRC -C /
echo "Starting Jenkins..."
systemctl start jenkins
echo "Restore completed."
-
将上述脚本加入 cron 表:`crontab -e` 添加 `0 3 * * * /usr/local/bin/bckup.sh`。
六、常见故障排查
错误信息或症状 | 原因 | 快速排查 & 修复建议
A. Jenkins 无法启动
- 检查日志 /var/log/messages 与 /var/log/jnlpx.log 是否有内存不足或端口占用报错。- 若出现 Could not find java executable确认 JA_HOME 环境变量已正确设置并已重新启动。B. 插件冲突导致 UI 卡顿或报错 NoClassDefFoundError
- 前往 Manage> Manage Plugins 卸载最近升级的插件或使用 命令行卸载。说起来,C. 建立任务持续卡在某一步
- 查看 /target/... 是否已满磁盘;检查网络代理是否阻断 Maven 仓库访问;调低 MEN_OPTS="-Xmx512m" 避免 OOM。D. 部署后 Nginx 重载失败
- 确认 /etc/nginx/conf.d/*.conf 正确引用新容器 IP 或域名;查看 /var/log/nginx/error.log 获取详细错误信息。E. 邮件通知无法发送
- 检查 SMTP 设置是否被防火墙阻断;尝试手动运行 sendmail .
Z. 数据恢复失败
- 确认 backup 文件完整且未损坏;若是压缩包异常,可尝试逐个解压验证文件完整性。
✅ 常规检查清单:\
\
-
LVM &swap 大小足够,硬盘空间>= 当前使用量 + 容量预留。
\
-
`systemctl status jenkins.service` 输出无错误。
\
-
`netstat -tulpn | grep :8080` 能看到 Jenkins 正在监听。
\
-
`cat ~/.ssh/id_rsa.pub | ssh-keygen ...` 确保凭据已上传至 Git 仓库。\
\
提示一下 • 持续监控 • 日志审计 • 自动备份 • 安全加固都是实现高效自动化建立少不了的环节。按理说,请根据业务规模适配资源分配。并结合 CI/CD 常用方法进行细粒度权限控制和流水线调整。

