3、Jenkins基础配置:系统管理、全局工具配置、凭据管理、节点管理

好,咱们接着往下走。上一章我们把 Jenkins 装起来了,也看到了那个熟悉的欢迎页。但说实话,刚装好的 Jenkins 就像一台没装操作系统的电脑——能亮,但啥也干不了。

这一章,我就带你把这台「裸机」武装起来。我会从系统管理讲起,再到工具链配置、凭据管理,最后聊聊节点管理。这些都是我每天在流水线里摸爬滚打的基础功。

3.1 系统管理:Jenkins 的「控制面板」

点开左侧的「系统管理」,你会看到一大串配置项。别慌,咱们挑几个最常用的说。

3.1.1 系统配置

这里主要管 Jenkins 自己的「身体状态」。比如 Jenkins URL、系统管理员邮箱、全局属性这些。

Jenkins URL 一定要填对。我遇到过好几次,因为 URL 写成了 localhost,结果其他节点连不上主节点,白白排查了半天。

系统管理员邮箱 也很关键。构建失败时,Jenkins 会发邮件通知你。嗯,这个邮箱最好用公司的企业邮箱,别用个人邮箱,否则容易被当成垃圾邮件拦截。

我的习惯: 每次改完系统配置,我都会点一下「测试邮件配置」,确保邮件能正常发出去。别问我为什么——有一次我忘了配 SMTP 认证,结果所有构建失败通知都石沉大海了。

3.1.2 全局安全配置

安全这块,我建议你一开始就重视起来。Jenkins 默认的安全策略其实挺松的,生产环境绝对不能直接用。

我个人习惯这样配:

  • 安全域: 用 Jenkins 自己的用户数据库,或者 LDAP。小团队用前者就够了,大团队建议上 LDAP。
  • 授权策略: 选「登录用户可以做任何事」?别!选「基于项目的矩阵授权策略」,精细控制每个用户的权限。
  • CSRF 保护: 一定要开启。我见过有人关掉它,结果被恶意脚本搞崩了整个 Jenkins。
注意: 如果你在配置安全策略时把自己锁在外面了,别慌。去 Jenkins 主目录下找到 config.xml,把 <useSecurity>true</useSecurity> 改成 false,重启 Jenkins 就能恢复访问。这是最后的救命稻草。

3.2 全局工具配置:给 Jenkins 装上「工具箱」

Jenkins 本身不包含 JDK、Maven、Git 这些工具。你得告诉它:「嘿,这些工具在哪?」

点开「全局工具配置」,你会看到 JDK、Git、Maven、Gradle、Ant 等选项。说白了,就是给 Jenkins 指个路。

3.2.1 配置 JDK

嵌入式开发离不开 JDK。我一般这样配:

  • 别名: 写清楚版本号,比如 JDK11JDK17
  • 安装方式: 选「自动安装」或者「手动解压」。自动安装省事,但下载慢。我习惯手动解压到 /opt/jdk/ 下,然后填路径。
  • JAVA_HOME: 指向解压后的目录,比如 /opt/jdk/jdk-17.0.2

避坑指南: 我曾经在配置 JDK 时,直接填了 /usr/bin/java。结果 Jenkins 报错说找不到 tools.jar。后来才发现,必须填 JDK 的根目录,而不是 java 可执行文件的路径。

3.2.2 配置 Git

Git 是流水线的命脉。配置很简单:

  • Path to Git executable:git 或者 /usr/bin/git
  • 自动安装: 如果服务器没装 Git,可以选自动安装。但我建议你手动装,版本可控。

你想想看,如果 Git 没配好,后面所有拉代码的操作都会失败。所以配完后,最好建一个简单的流水线测试一下。

3.2.3 配置 Maven

嵌入式项目里,Maven 用来管理依赖和构建。配置方式和 JDK 类似:

  • 别名: 比如 Maven3.9
  • 安装方式: 手动解压到 /opt/maven/
  • MAVEN_HOME: 指向解压目录。
小技巧: 我习惯在全局工具配置里,把 Maven 的 settings.xml 也配好。比如配置阿里云镜像,这样构建时下载依赖会快很多。具体配置在 ~/.m2/settings.xml 里。

3.3 凭据管理:安全第一

凭据管理,说白了就是存密码、Token、SSH 密钥的地方。Jenkins 不会让你在流水线里明文写密码,而是通过凭据 ID 来引用。

3.3.1 添加凭据

点开「凭据」->「系统」->「全局凭据」->「添加凭据」。你会看到这些类型:

类型 适用场景 我的建议
Username with password Git 仓库、Docker Registry 适合简单场景,但密码会暴露在 Jenkins 中
SSH Username with private key SSH 连接远程服务器 嵌入式部署常用,安全可靠
Secret text API Token、密钥 适合存储 Token,比如 GitHub Token
Certificate HTTPS 证书 企业环境常用

ID 字段 很重要。这个 ID 是你在流水线里引用凭据的唯一标识。我习惯用 gitlab-creddocker-hub-cred 这种命名方式,一看就懂。

注意: 凭据一旦创建,ID 就不能改了。所以命名时要想清楚。我吃过这个亏——一开始随便写了个 cred1,后来项目多了,根本分不清哪个是哪个。

3.3.2 使用凭据

在流水线里,凭据通过 credentialsId 引用。比如:

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main',
                    url: 'https://gitlab.com/myproject.git',
                    credentialsId: 'gitlab-cred'
            }
        }
    }
}

看到了吗?密码不会出现在代码里,只引用了一个 ID。这样既安全又方便管理。

3.4 节点管理:让 Jenkins 跑得更远

节点管理,就是让 Jenkins 能在多台机器上执行任务。比如,你可以在 Windows 上编译,在 Linux 上部署,在 ARM 板上测试。

3.4.1 添加节点

点开「系统管理」->「节点管理」->「新建节点」。你会看到:

  • 节点名称: 比如 linux-build-nodearm-test-node
  • 远程工作目录: 节点上存放工作空间的路径,比如 /home/jenkins/workspace
  • 启动方式: 选「通过 SSH 启动」或者「通过 Java Web Start 启动」。我推荐 SSH 方式,稳定且可控。
  • 主机: 节点的 IP 或域名。
  • 凭据: 选择 SSH 凭据,用于连接节点。

我的经验: 添加节点时,一定要先测试连接。Jenkins 会尝试 SSH 到节点,如果失败,会给出具体错误。我遇到过因为 SSH 密钥权限不对导致连接失败的情况,改一下 chmod 600 ~/.ssh/id_rsa 就好了。

3.4.2 节点标签

节点多了,怎么分配任务?用标签。比如:

  • 给 Linux 节点打上 linux 标签。
  • 给 ARM 节点打上 arm 标签。
  • 给高性能节点打上 high-mem 标签。

然后在流水线里指定:

pipeline {
    agent { label 'linux && high-mem' }
    stages {
        stage('Build') {
            steps {
                echo 'Building on a Linux node with high memory'
            }
        }
    }
}

这样,Jenkins 会自动把任务调度到符合条件的节点上。说白了,就是让合适的机器干合适的活。

3.4.3 节点监控

节点跑着跑着,可能会出问题。我习惯在「节点管理」页面定期查看:

  • 在线状态: 绿色表示正常,红色表示离线。
  • 磁盘空间: 如果磁盘快满了,构建会失败。
  • 执行器数量: 每个节点可以并发跑几个任务。别设太多,否则机器会卡死。
小建议: 我一般给每个节点设 2 个执行器。嵌入式编译很吃 CPU,并发太多反而拖慢整体速度。你可以根据机器配置调整,但别超过 CPU 核心数。

3.5 小结

这一章我们聊了 Jenkins 的四个核心配置:

  • 系统管理: 管好 Jenkins 自己的「身体」和「安全」。
  • 全局工具配置: 给 Jenkins 装上 JDK、Git、Maven 这些「工具」。
  • 凭据管理: 安全地存好密码、Token、SSH 密钥。
  • 节点管理: 让 Jenkins 能跑在多台机器上,实现分布式构建。

这些配置看起来琐碎,但每一环都关系到流水线的稳定。我刚开始用 Jenkins 时,总觉得这些配置浪费时间,后来吃过几次亏才明白——基础打牢了,后面才能跑得快。

下一章,咱们开始写第一个流水线。到时候你会看到,这些配置是怎么在实战中发挥作用的。


公众号:蓝海资料掘金营,微信deep3321