首页主机资讯centos jenkins部署实战案例

centos jenkins部署实战案例

时间2025-11-28 13:17:04发布访客分类主机资讯浏览734
导读:CentOS 上部署 Jenkins 实战案例 一 环境准备与版本选择 操作系统建议:CentOS 7/8(本文以 CentOS 7 为例,其他版本命令基本一致)。 Java 版本:新版本 Jenkins LTS 建议使用 OpenJDK...

CentOS 上部署 Jenkins 实战案例

一 环境准备与版本选择

  • 操作系统建议:CentOS 7/8(本文以 CentOS 7 为例,其他版本命令基本一致)。
  • Java 版本:新版本 Jenkins LTS 建议使用 OpenJDK 11 或更高版本;如必须使用 JDK 8,请选择与之兼容的 Jenkins 2.346.x LTS 等老版本,避免插件不兼容。
  • 基础工具:安装 Git、Maven(Java 项目)、必要时准备 Tomcat 8.5+(部署 WAR)。
  • 防火墙与端口:开放 8080(Jenkins)、8081(Tomcat 示例)、以及 22(SSH),或临时停用防火墙用于测试。
  • 版本匹配要点:Jenkins 与插件生态对 Java 版本较敏感,新版本 Jenkins 对 JDK 11+ 支持更好;若计划集成 SonarQube 7.8+,也建议 JDK 11+

二 安装与初始化

  • 安装 Java(推荐 OpenJDK 11)
    • 命令:sudo yum install -y java-11-openjdk-devel
    • 验证:java -version
  • 添加 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
      
  • 防火墙放行
    • 命令:
      sudo firewall-cmd --permanent --add-port=8080/tcp
      sudo firewall-cmd --reload
      
  • 初始化解锁
    • 获取初始密码:sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    • 访问:http://< 服务器IP> :8080,粘贴密码,选择“安装推荐插件”,创建管理员账户。

三 实战一 Java Maven 项目自动构建与 Tomcat 部署

  • 目标:代码提交到 Git → Jenkins 拉取 → Maven 构建 → SonarQube 扫描 → 部署到 Tomcat(远程主机)。
  • 前置准备
    • 在 Jenkins 安装插件:Git、Maven Integration、SSH Pipeline Steps、SonarQube Scanner(或 Sonar Quality Gates)。
    • 全局工具配置:配置 JDK 11Maven 3.8.x 路径。
    • SonarQube:部署 7.8+,创建项目令牌;Jenkins 配置 SonarQube 服务与凭据。
    • Tomcat:在目标主机安装 Tomcat 8.5+,开启 manager-script 角色;在 Jenkins 配置 SSH 凭据(私钥)与目标主机信息。
  • 示例 Jenkinsfile(Pipeline)
    pipeline {
    
      agent any
      tools {
    
        maven 'Maven-3.8'
        jdk 'JDK-11'
      }
    
      environment {
    
        SONAR_TOKEN = credentials('sonar-token')
        TOMCAT_HOST = '192.168.220.173'
        TOMCAT_USER = 'tomcat'
        APP_WAR   = 'target/app.war'
        TOMCAT_WEBAPPS = '/opt/tomcat/webapps'
      }
    
      stages {
    
        stage('Checkout') {
    
          steps {
     git branch: 'main', url: 'git@your-gitlab:group/project.git' }
    
        }
    
        stage('Build') {
    
          steps {
     sh 'mvn -B -DskipTests clean package' }
    
        }
    
        stage('SonarQube Analysis') {
    
          steps {
    
            withSonarQubeEnv('SonarQube') {
        
              sh """
                mvn sonar:sonar \
                  -Dsonar.projectKey=your-project \
                  -Dsonar.sources=src \
                  -Dsonar.host.url=http://<
        sonar-host>
    :9000 \
                  -Dsonar.login=$SONAR_TOKEN
              """
            }
    
          }
    
        }
    
        stage('Deploy to Tomcat') {
    
          steps {
    
            sshPublisher(
              publishers: [
                sshPublisherDesc(
                  configName: 'tomcat-prod',
                  transfers: [
                    sshTransfer(
                      sourceFiles: "${
    APP_WAR}
    ",
                      removePrefix: 'target',
                      remoteDirectory: "${
    TOMCAT_WEBAPPS}
    "
                    )
                  ],
                  usePromotionTimestamp: false,
                  useWorkspaceInPromotion: false,
                  verbose: true
                )
              ]
            )
          }
    
        }
    
      }
    
      post {
    
        success {
     echo 'Deploy success.' }
    
        failure {
     echo 'Build or deploy failed.' }
    
      }
    
    }
    
    
  • 要点
    • 触发器建议:GitLab Webhook(Push 事件)触发构建;Jenkins 系统配置中设置 CSRF 保护与 Webhook 可信 IP。
    • Tomcat 热部署:上传 WAR 到 webapps 目录后自动解压;必要时调用 /manager/text/reload?path=/ 或重启 Tomcat(生产谨慎)。
    • 安全建议:SSH 使用密钥、限制 sudo 权限;SonarQube 令牌以 Secret text 类型保存。

四 实战二 接口自动化测试并生成 Allure 报告

  • 目标:拉取测试代码 → 安装依赖 → 运行 pytest + Allure → 归档并展示报告。
  • 前置准备
    • 安装 Python 3.11pipAllure 命令行;在 Jenkins 安装 Allure 插件
    • 项目依赖:pip install -r requirements.txt(含 pytest、allure-pytest 等)。
  • 示例 Jenkinsfile
    pipeline {
    
      agent any
      environment {
    
        PYTHON = '/usr/bin/python3.11'
        ALLURE_HOME = '/opt/allure-2.21.0'
        REPORT_DIR = 'allure-report'
      }
    
      stages {
    
        stage('Checkout') {
    
          steps {
     git branch: 'main', url: 'git@your-gitlab:group/api-test.git' }
    
        }
    
        stage('Install deps') {
    
          steps {
     sh "${
    PYTHON}
     -m pip install -r requirements.txt" }
    
        }
    
        stage('Run tests') {
    
          steps {
     sh "${
    PYTHON}
     -m pytest tests/ --alluredir=${
    REPORT_DIR}
    " }
    
        }
    
      }
    
      post {
    
        always {
    
          allure([
            includeProperties: false,
            jdk: '',
            properties: [],
            reportBuildPolicy: 'ALWAYS',
            results: [[path: env.REPORT_DIR]]
          ])
        }
    
      }
    
    }
        
    
  • 要点
    • 报告展示:Jenkins 构建后可在 Allure Report 页面查看趋势与用例详情。
    • 环境差异:不同 Linux 发行版/版本JDK/Python/Allure 版本需严格匹配,避免命令不可用或插件不兼容。

五 运维与安全加固

  • 运行用户与权限
    • 建议以 jenkins 用户运行:sudo systemctl edit jenkins 设置 User=jenkins,并确保 /var/lib/jenkins/var/log/jenkins 属主为 jenkins:jenkins;必要时在 systemd 服务中调整 JAVA_HOME
  • 端口与反向代理
    • 如需域名与 HTTPS,使用 Nginx 反向代理 8080 → 80/443,配置 Let’s Encrypt 证书;或直接在 /etc/sysconfig/jenkins 调整 JENKINS_PORT
  • 防火墙与服务治理
    • 仅开放必要端口(如 8080/8081/22/443),生产环境避免直接关闭防火墙;使用 sudo systemctl status jenkinssudo journalctl -u jenkins -f 排查故障。
  • 插件与升级策略
    • 定期更新 Jenkins LTS 与插件,先备份 $JENKINS_HOME;插件冲突时回滚或临时使用兼容版本。
  • 分布式构建
    • 通过 Jenkins Agent 扩展构建能力,分担 Maven/测试 负载,提高稳定性与并发度。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos jenkins部署实战案例
本文地址: https://pptw.com/jishu/758962.html
CentOS Jenkins配置中常见问题及解决方法 CentOS Jenkins配置中的性能瓶颈如何突破

游客 回复需填写必要信息