avatar

Ryan's Blog

The first step is always the hardest.

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
  • 工具
Home Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置
文章

Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置

Posted 2022-01-12 Updated 19 days ago
By Ryan Chen
12~15 min read

Jenkins 是常见的 CI/CD 自动化平台,可以完成代码拉取、编译、测试、静态扫描、打包、制品归档和部署等流程。

这篇文章整理 Jenkins 安装部署、初始化、JDK / Maven 工具配置、Agent 构建节点和安全建议,为后续 GitLab Webhook、自动打包和 SonarQube 扫描打基础。

CI/CD 系列文章

本文属于 Jenkins + GitLab + SonarQube CI/CD 系列,相关内容可以继续阅读:

  • Git 提交规范实践:Conventional Commits、Commitizen 与 CHANGELOG 自动生成
  • GitLab Docker 部署与 Personal Access Token 配置指南
  • Jenkins 安装部署与 JDK、Maven、Agent 构建环境配置
  • GitLab Webhook 触发 Jenkins Pipeline:Push、Tag 与 Merge Request 自动构建
  • Jenkins 基于 GitLab 分支与 Tag 的自动化打包发布实践
  • Jenkins 集成 SonarQube:代码扫描、质量门禁与 Pipeline 实践
  • SonarQube Docker 部署与 Java 项目静态代码分析指南
  • SonarQube for IDE 使用指南:IntelliJ 安装、Connected Mode 与规则同步
  • SonarQube LTA 升级与数据库迁移指南:从旧版本到 8.9/9.9/2025 LTA

安装方式选择

常见安装方式:

方式 适用场景
Docker 快速部署、方便迁移
RPM / DEB 传统服务器部署
Kubernetes 云原生和弹性 Agent 场景

生产环境建议固定 Jenkins LTS 版本,并关注当前 Jenkins 对 Java 版本的要求。

Docker 部署示例

docker run -d \
  --name jenkins \
  --restart=always \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /opt/data/jenkins:/var/jenkins_home \
  jenkins/jenkins:lts-jdk17

注意:不建议无脑使用 root 用户运行 Jenkins;如果确实需要构建 Docker 镜像,也要评估挂载 /var/run/docker.sock 的安全风险。更推荐使用专用 Agent 或受控构建环境。

初始化 Jenkins

查看初始密码:

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

首次访问:

http://<jenkins-host>:8080

建议安装插件:

  • Git
  • GitLab
  • Pipeline
  • Maven Integration
  • SonarQube Scanner
  • Credentials Binding

配置 JDK

路径:

Manage Jenkins -> Tools -> JDK installations

建议:

  • Jenkins 控制节点使用官方推荐 Java 版本。
  • 构建项目需要的 JDK 可以配置在 Tools 或 Agent 上。
  • 多 JDK 项目不要共用模糊命名,建议 jdk8、jdk17、jdk21。

Pipeline 示例:

pipeline {
  agent any
  tools {
    jdk 'jdk17'
    maven 'maven-3.9'
  }
  stages {
    stage('Build') {
      steps {
        sh 'java -version'
        sh 'mvn -version'
      }
    }
  }
}

配置 Maven

路径:

Manage Jenkins -> Tools -> Maven installations

建议同时配置 Maven settings.xml:

  • 私服地址。
  • 镜像仓库。
  • 凭据不要明文写入项目。
  • 本地仓库按 Agent 隔离。

Agent 构建节点

不建议所有任务都跑在 Controller 上。更合理的方式是:

  • Controller 负责调度。
  • Agent 负责具体构建。
  • 不同语言使用不同 Agent。
  • 高风险构建隔离执行。

常见 Agent 类型:

  • SSH Agent。
  • Docker Agent。
  • Kubernetes Pod Agent。

安全建议

  • 禁止匿名访问管理功能。
  • 使用 Matrix Authorization 或角色权限控制。
  • 所有 Token 放入 Jenkins Credentials。
  • 不要在 Shell 中打印密码。
  • 插件定期升级。
  • Jenkins Home 定期备份。
  • 构建节点与生产环境权限隔离。

常见问题

1. Jenkins 启动失败

检查 Java 版本、端口占用和 Jenkins Home 权限。

docker logs -f jenkins

2. Maven 找不到

检查 Jenkins Tools 中 Maven 名称是否与 Jenkinsfile 中一致。

3. 构建中需要 Docker

不要直接把 Docker 权限开放给所有任务。建议使用专用 Agent,并限制 Job 权限。

参考资料

  • Jenkins 安装文档
  • Jenkins Pipeline 文档
  • Jenkins 管理凭据
指南
Jenkins JDK Maven Pipeline Jenkinsfile 持续集成 Java
License:  CC BY 4.0
Share

Further Reading

Jun 27, 2026

Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分

本文整理一套适合 Router Agent + Skill + Runtime 架构的设计原则:Agent 只负责业务决策,Runtime 统一负责执行、恢复、Trace、Checkpoint 和 Evidence,Business Script 只做确定性业务执行。

Sep 9, 2024

Redis 核心概念、数据结构与高可用架构详解

系统梳理 Redis 的核心数据类型、底层结构、过期与淘汰、持久化、事务、主从复制、Sentinel、Cluster、缓存一致性和分布式锁等机制,适合作为 Redis 学习、面试复习和高可用架构设计参考。

Sep 5, 2024

B+树原理与 MySQL InnoDB 索引机制解析

本文从 B+ 树的多叉平衡结构、叶子节点链表、范围查询和磁盘 I/O 特性出发,解释数据库索引为什么常采用 B+ 树,并结合 MySQL InnoDB 的聚簇索引、二级索引、回表、覆盖索引和联合索引机制理解其实际应用。

OLDER

SonarQube Docker 部署与 Java 项目静态代码分析指南

NEWER

GitLab Docker 部署与 Personal Access Token 配置指南

Recently Updated

  • Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分
  • RocketMQ 架构设计与应用最佳实践:高可用消息队列核心解析
  • Redis 核心概念、数据结构与高可用架构详解
  • B+树原理与 MySQL InnoDB 索引机制解析
  • MySQL AUTO_INCREMENT 插入 0 变成自增值的原因与解决方案

Trending Tags

RocketMQ Windows Feign Docker Zipkin SonarQube OkHttp HttpClient API 性能优化

Contents

©2026 Ryan's Blog. Some rights reserved. · 粤ICP备2022031588号