温馨提示×

Linux Jenkins如何集成工具

小樊
45
2026-01-04 18:46:36
栏目: 智能运维

Linux 上 Jenkins 集成常用工具实操指南

一 准备与环境

  • 安装 Java 11(Jenkins 2.x 推荐):sudo apt update && sudo apt install openjdk-11-jdk -y(或 yum/dnf 安装对应 OpenJDK)。
  • 安装 Jenkins
    • Ubuntu/Debian:添加 Jenkins 官方 GPG 与源后 apt 安装并启动:sudo systemctl start jenkins && sudo systemctl enable jenkins。
    • CentOS/RHEL:导入 yum 源后 yum 安装并启动:sudo systemctl enable jenkins && sudo systemctl start jenkins。
  • 访问 http://<服务器IP>:8080 完成解锁与初始插件安装。
  • 在 Jenkins 中安装常用插件:GitPipelineCredentials BindingDockerKubernetes CLI、以及质量与测试相关插件(如 JUnit、Allure 等)。

二 全局工具与凭据配置

  • 进入 Manage Jenkins → Global Tool Configuration,配置 JDK、Git、Maven/Gradle、NodeJS 等工具的安装路径或自动安装;进入 Manage Jenkins → Configure System 配置 Jenkins URL、管理员邮箱 等。
  • Manage Jenkins → Manage Credentials 添加凭据:
    • Git 使用 SSH 私钥(将公钥添加到 Git 仓库 Deploy Keys 或个人 SSH Keys)。
    • 服务器部署使用 SSH 私钥用户名/密码
    • 敏感信息统一用 Credentials Binding 在构建中引用,避免明文。

三 典型工具集成步骤

  • 版本控制 Git
    • 在任务源码管理中填写仓库 URL,选择上一步的 SSH 凭据;按需配置 Webhook(如 GitLab/GitHub)以实现 push 触发构建,或使用 轮询 SCM(如 H/5 * * * 每 5 分钟检查一次)。
  • 构建工具 Maven/Gradle/Ant
    • 在全局工具中配置 M3/GRADLE/ANT;在 Job 或 Jenkinsfile 中使用 tool 绑定或通过 PATH 调用:
      • Maven:sh “${tool ‘M3’}/bin/mvn -B clean package”
      • Gradle:sh “${tool ‘GRADLE’}/bin/gradle build”
  • Node.js/NPM
    • 全局工具配置 NodeJS,在构建步骤执行:npm install && npm run build。
  • 容器与云原生 Docker/Kubernetes
    • 安装 Docker 并将 jenkins 用户加入 docker 组(usermod -aG docker jenkins),或在容器中挂载 Docker socket;在 Job 中使用 docker 命令或 Kubernetes CLI 插件执行 kubectl 部署。
  • 自动化测试 JUnit/Selenium/Allure、API/性能
    • 单元测试/UI 测试:mvn test 或运行 Selenium 套件,使用 JUnit 插件收集结果,Allure 插件生成报告。
    • API 测试:newman run collection.json --reporters junit,html。
    • 性能测试:jmeter -n -t test.jmx -l result.jtl,并归档报告。

四 示例 Jenkinsfile 流水线

pipeline {
  agent any
  tools {
    maven 'M3'
    jdk   'JDK11'
    nodejs 'NodeJS-16'   // 需在全局工具中预先配置
  }
  environment {
    // 引用“SSH 私钥”凭据(ID 为 git-ssh)
    GIT_SSH_COMMAND = 'ssh -i $HOME/.ssh/id_rsa -o StrictHostKeyChecking=no'
  }
  stages {
    stage('Checkout') {
      steps {
        git branch: 'main',
            url: 'git@github.com:org/repo.git',
            credentialsId: 'git-ssh'
      }
    }
    stage('Build') {
      steps {
        sh 'mvn -B clean package -DskipTests'
      }
    }
    stage('Test') {
      steps {
        sh 'npm ci && npm run test:ci -- --junit-xml=test-results.xml'
      }
      post {
        always {
          junit '**/test-results.xml'
          // 若使用 Allure:allure includeProperties: false, results: [[path: 'target/allure-results']]
        }
      }
    }
    stage('Docker Build & Push') {
      steps {
        script {
          docker.build("org/app:${env.BUILD_NUMBER}", '.').push()
        }
      }
    }
  }
  post {
    success { echo 'Build & Test Success' }
    failure { echo 'Build Failed' }
  }
}

说明:凭据 ID、工具名称、报告路径需与 Jenkins 中实际配置保持一致。

五 触发与部署实践

  • 触发策略
    • 代码变更即时触发:在 GitLab/GitHub 配置 Webhook,指向 Jenkins 任务;Jenkins 侧安装对应 Hook 插件(如 GitLab Hook)。
    • 定时触发:使用 轮询 SCM(如 H/5 * * *)。
  • 部署与传输
    • 使用 SSH 免密钥 将产物同步到目标机器(rsync/ssh),或在流水线中调用 Ansible 剧本完成滚动升级。
  • 质量与协作
    • 集成 SonarQube(代码质量)、邮件/Slack(通知)、以及测试管理工具(如 禅道、TestRail、TestLink、Zephyr Scale、PractiTest)实现测试结果回传与需求-用例-构建全链路追溯。

0