首页主机资讯Jenkins在Debian上的集成测试

Jenkins在Debian上的集成测试

时间2026-01-20 14:59:04发布访客分类主机资讯浏览921
导读:在 Debian 上搭建 Jenkins 执行集成测试 一 环境准备与安装 安装 Java 11(Jenkins 官方推荐 LTS 版本): 执行:sudo apt update && sudo apt install...

在 Debian 上搭建 Jenkins 执行集成测试

一 环境准备与安装

  • 安装 Java 11(Jenkins 官方推荐 LTS 版本):
    • 执行:sudo apt update & & sudo apt install -y openjdk-11-jdk
    • 验证:java -version
  • 安装 Jenkins(APT 方式):
    • 导入密钥:wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
    • 添加源:echo "deb http://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
    • 安装与启动:sudo apt update & & sudo apt install -y jenkins
    • 开机自启:sudo systemctl enable --now jenkins
    • 验证服务:sudo systemctl status jenkins
  • 访问控制台:打开浏览器访问 http://< 服务器IP> :8080,首次解锁密码位于 /var/lib/jenkins/secrets/initialAdminPassword

二 安全与基础配置

  • 完成解锁后,安装常用插件:GitMaven IntegrationPipeline(Manage Jenkins → Manage Plugins → Available)。
  • 全局工具配置(Manage Jenkins → Global Tool Configuration):
    • 配置 JDK 11(自动安装或指定已安装路径)。
    • 配置 Maven(自动安装或指定 MAVEN_HOME)。
  • 安全与权限(Manage Jenkins → Configure Global Security):
    • 启用 CSRF 保护;按需配置 Agent → Master 安全、项目矩阵授权。
  • 凭据管理(Manage Jenkins → Manage Credentials):
    • 添加 SSH 私钥(拉取私有仓库)、用户名/密码Secret text(如 API Token)等凭据,供 Job 使用。

三 创建集成测试流水线

  • 示例一 多语言通用 Pipeline(Jenkinsfile,置于仓库根目录)
    pipeline {
    
      agent any
      tools {
    
        jdk 'openjdk-11'     // 与全局工具配置中的名称一致
        maven 'maven-3'      // 与全局工具配置中的名称一致
      }
    
      environment {
    
        CI = true
      }
    
      stages {
    
        stage('Checkout') {
    
          steps {
     git branch: 'main', url: 'git@github.com:org/repo.git' }
    
        }
    
        stage('Build') {
    
          steps {
     sh 'mvn -B -DskipTests clean package' }
    
        }
        
        stage('Unit &
     Integration Tests') {
    
          steps {
    
            sh 'mvn -B verify -Pintegration-tests'
            // 若使用 JUnit,可配合 junit 步骤归档报告
            // junit '**/target/surefire-reports/*.xml,**/target/failsafe-reports/*.xml'
          }
    
          post {
    
            always {
    
              // 归档测试与覆盖率报告(按项目实际路径调整)
              archiveArtifacts artifacts: '**/target/*.log,**/target/*-reports/**', allowEmptyArchive: true
            }
    
          }
    
        }
    
      }
    
      post {
    
        success {
     echo 'Integration tests passed.' }
    
        failure {
     echo 'Integration tests failed.' }
    
        unstable {
     echo 'Tests were unstable.' }
    
      }
    
    }
    
    
  • 示例二 Python 项目 Pipeline
    pipeline {
    
      agent any
      environment {
    
        PYTHONUNBUFFERED = '1'
        PIP_CACHE_DIR    = "${
    WORKSPACE}
    /.cache/pip"
      }
    
      stages {
    
        stage('Checkout') {
    
          steps {
     git branch: 'main', url: 'git@github.com:org/repo.git' }
    
        }
    
        stage('Install deps') {
    
          steps {
     sh 'pip install -r requirements.txt' }
    
        }
    
        stage('Integration Tests') {
    
          steps {
     sh 'pytest tests/integration --junitxml=reports/integration.xml' }
    
        }
    
        stage('Archive') {
    
          steps {
     junit 'reports/integration.xml' }
    
        }
    
      }
    
    }
        
    
  • 在 Jenkins 中新建 Pipeline 任务,选择 “Pipeline script from SCM”,指向上述 Jenkinsfile 仓库与分支即可。

四 触发策略与质量门禁

  • 触发策略
    • SCM 轮询:在 Job 配置中设置 “Poll SCM”,如 H/5 * * * *(每 5 分钟检查一次提交)。
    • Webhook:在代码托管平台配置 GitHub/GitLab Webhook,指向 http:///github-webhook/(需安装 GitHub/GitLab 插件并开启 CSRF 豁免或正确 Token 配置)。
  • 质量门禁与报告
    • 使用 JUnit 报告归档测试结果,结合 Post-build Actions 设置“不稳定/失败条件”(如失败用例数阈值)。
    • 集成 SonarQube(SonarScanner 插件)进行代码质量门禁;在 Job 中执行 sonar-scanner 并配置项目属性。
    • 覆盖率(示例):Java 使用 JaCoCo,Maven 配置 jacoco:report,并在 Job 中归档 **/target/site/jacoco/** 报告,结合阈值判断质量门禁。
  • 通知与协作
    • Email Extension 插件发送构建结果邮件;可结合 Slack/企业微信 插件进行即时通知。

五 常见问题与排错要点

  • 权限与凭据
    • 拉取私有仓库失败:确认 SSH 私钥已添加至 Jenkins 凭据并在 Job 中使用;或改用 HTTPS + Personal Access Token
  • Java 与工具链
    • 构建时报 “Java not found” 或 “Maven not found”:在 Global Tool Configuration 正确配置 JDK/Maven,或在节点上预装并配置 JAVA_HOME/MAVEN_HOME
  • 端口与防火墙
    • 无法访问 8080:确认 sudo ufw allow 8080/tcp 或云安全组已放行;必要时修改 /etc/default/jenkins 中的 HTTP_PORT 并重启服务。
  • 报告不显示
    • 归档路径与报告生成路径不一致:检查构建日志与 archiveArtifacts/junit 路径;确保测试框架输出到预期目录(如 target/surefire-reports)。
  • 资源与稳定性
    • 构建并发或大项目导致 OOM:为 Jenkins Agent 配置合适的 JVM 堆Docker/容器资源限制;必要时使用 Kubernetes/动态代理扩展执行节点。

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


若转载请注明出处: Jenkins在Debian上的集成测试
本文地址: https://pptw.com/jishu/787289.html
Debian Minimal如何进行性能监控 Debian上Jenkins的脚本编写

游客 回复需填写必要信息