如何在CentOS上快速部署Jenkins,实现高效自动化构建的详细步骤?

更新于
2026-08-21 15:31:07
3阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐
老实说,

在 CentOS 程序上快速部署 Jenkins 并实现高效自动化建立。往往会遇到以下痛点:

  • 依赖安装繁琐,容易出现版本冲突。
  • 防火墙和 SELinux 配置不当导致访问受限。
  • 初始管理员密码易被忘记或泄露。
  • 插件管理不当会导致程序变慢或崩溃。
  • 缺乏统一的备份与恢复方案,业务停机时风险高。

一、准备工作:程序更新与基础依赖

步骤 1:更新程序

如何在CentOS上快速部署Jenkins,实现高效自动化构建的详细步骤?

bash sudo yum update -y

步骤 2:安装 OpenJDK

bash sudo yum install java-11-openjdk-devel -y java -version # 验证安装成功

步骤 3:安装 Git 与可选 Docker

如何在CentOS上快速部署Jenkins,实现高效自动化构建的详细步骤?

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 基础配置 – 插件与全局工具集成

  1. 登录 Jenkins Web UI
  2. A. 安装推荐插件包:
  3. - 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 常用方法进行细粒度权限控制和流水线调整。

    标签:CentOS
    老实说,

    在 CentOS 程序上快速部署 Jenkins 并实现高效自动化建立。往往会遇到以下痛点:

    • 依赖安装繁琐,容易出现版本冲突。
    • 防火墙和 SELinux 配置不当导致访问受限。
    • 初始管理员密码易被忘记或泄露。
    • 插件管理不当会导致程序变慢或崩溃。
    • 缺乏统一的备份与恢复方案,业务停机时风险高。

    一、准备工作:程序更新与基础依赖

    步骤 1:更新程序

    如何在CentOS上快速部署Jenkins,实现高效自动化构建的详细步骤?

    bash sudo yum update -y

    步骤 2:安装 OpenJDK

    bash sudo yum install java-11-openjdk-devel -y java -version # 验证安装成功

    步骤 3:安装 Git 与可选 Docker

    如何在CentOS上快速部署Jenkins,实现高效自动化构建的详细步骤?

    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 基础配置 – 插件与全局工具集成

    1. 登录 Jenkins Web UI
    2. A. 安装推荐插件包:
    3. - 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 常用方法进行细粒度权限控制和流水线调整。

    标签:CentOS