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 中安装常用插件:Git、Pipeline、Credentials Binding、Docker、Kubernetes 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 {
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'
}
}
}
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)实现测试结果回传与需求-用例-构建全链路追溯。