配置工具与带标签的代理

Beginner

简介

Jenkins 可以在不同的节点上运行构建任务。标签(Label)用于描述节点的功能,例如 linux-build,作业可以在调度前要求匹配特定的标签。Jenkins 还可以存储工具安装路径(例如 Git),这样作业和插件就可以引用已命名的工具,而无需依赖硬编码的路径。

在本实验中,你将使用 Jenkins 控制面板查看内置节点、添加节点标签、配置本地 Git 工具、创建一个受标签限制的自由风格作业,并确认构建输出。

打开内置节点页面

在此步骤中,你将在控制面板中找到 Jenkins 内置节点。节点是 Jenkins 执行构建任务的地方。本实验使用内置节点,因为它在 LabEx Jenkins 控制器中已处于在线状态。

打开桌面界面。Firefox 会自动打开 Jenkins。如果没有打开,请访问 http://localhost:8080

在 Jenkins 控制面板中:

点击左侧边栏的 Manage Jenkins,然后点击 Nodes。打开名为 Built-In Node 的节点。

节点页面应显示内置节点的状态以及诸如 ConfigureBuild History 等导航选项。

Jenkins 内置节点页面

在终端中运行以下命令,记录内置节点页面是否可访问:

curl -fsS http://localhost:8080/computer/%28built-in%29/ | grep -o 'Built-In Node' | head -1 | tee /home/labex/project/built-in-node-page.txt

你应该看到:

Built-In Node

为内置节点添加标签

在此步骤中,你将为内置节点添加 linux-build 标签。标签是一种调度标记。要求 linux-build 的作业只能在拥有该标签的节点上运行。

Built-In Node 页面上,点击 Configure

找到 Labels 字段并输入:

linux-build

点击 Save

保存后,Jenkins 会返回到内置节点页面。页面应显示 linux-build 标签。

Jenkins 内置节点标签

配置本地 Git 工具

在此步骤中,你将注册一个名为 Local Git 的 Jenkins Git 工具。工具配置允许 Jenkins 引用已命名的安装路径,而不是猜测使用哪个可执行文件。

在 Jenkins 控制面板中:

点击 Manage Jenkins,然后点击 Tools

滚动到 Git installations 部分。如果已经存在 Git 安装配置,请更新第一个。如果该部分没有安装配置,请点击 Add Git

使用以下值填写 Git 安装信息:

  • Name: Local Git
  • Path to Git executable: git

点击 Save

Jenkins 会将此工具定义存储在其控制器配置中。

Jenkins 本地 Git 工具

运行以下命令以检查已保存的 Git 工具配置:

docker exec jenkins sh -lc "grep -n -E '<name>Local Git</name>|<home>git</home>' /var/jenkins_home/hudson.plugins.git.GitTool.xml" | tee /home/labex/project/git-tool-lines.txt

输出应包含工具名称和可执行文件路径:

...<name>Local Git</name>
...<home>git</home>

创建受标签限制的作业

在此步骤中,你将创建一个名为 labeled-tool-demo 的自由风格作业。该作业将限制在拥有 linux-build 标签的节点上运行,因此 Jenkins 必须将其调度到带有该标签的内置节点上。

在 Jenkins 控制面板中:

点击 New Item,输入 labeled-tool-demo,选择 Freestyle project,然后点击 OK

在配置页面上:

勾选 Restrict where this project can be run。在 Label Expression 中输入:

linux-build

滚动到 Build Steps,点击 Add build step,然后选择 Execute shell

输入以下 shell 脚本:

echo "Running on label: linux-build"
git --version
echo "Local Git is available to this build"

点击 Save

保存后应跳转到作业页面。

Jenkins 带标签的自由风格作业

运行以下命令以记录重要的已保存作业设置:

docker exec jenkins sh -lc "grep -n -E '<assignedNode>linux-build</assignedNode>|Running on label: linux-build|git --version' /var/jenkins_home/jobs/labeled-tool-demo/config.xml" | tee /home/labex/project/labeled-job-config.txt

运行带标签的作业

在此步骤中,你将运行该作业并读取控制台输出。这证明了 Jenkins 接受了标签限制,并且构建任务可以在配置的环境中运行 Git。

labeled-tool-demo 作业页面上,点击 Build Now

当构建 #1 出现在构建历史中时,打开它并点击 Console Output。控制台应显示标签消息、git version 行以及 Finished: SUCCESS

Jenkins 带标签的作业控制台输出

在终端中运行以下命令,保存相同的控制台证据以供验证:

curl -fsS http://localhost:8080/job/labeled-tool-demo/1/consoleText | grep -E 'Running on label|git version|Finished: SUCCESS' | tee /home/labex/project/labeled-job-console.txt

你应该看到如下输出:

Running on label: linux-build
git version ...
Finished: SUCCESS

总结

你查看了 Jenkins 内置节点,从控制面板添加了 linux-build 标签,配置了名为 Local Git 的本地工具,创建了一个受标签限制的自由风格作业,并验证了构建输出是否成功。