正常部署Jenkins有两种方式,一个是直接war或者msi的包在windows系统上搭建,但是windows搭建一般是自己本机进行测试,如果有多台机器同时持续集成的时候,windows并不是一个合适的方式,之前我们已经搭建了一个Rocky Linux8的Jenkins服务器,但是我们需要执行的自动化程序只能在windows上执行,这个时候就需要Linux上的Jenkins服务可以控制Windows,所以引入了windows作为子节点,来创建独立的工作空间,完成windows相应的操作

一、Jenkins创建本地项目

在创建子节点完成相应的工作之前,我们先完成一个本地项目的构建,例如下图创建的Freestyle project-Test

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_python

 

 创建项目完成后会进入配置页面

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Test_02

 这里我们运行一个本地的项目,所以依次设置如下:
A. 设置项目描述(可选)
B. 源码管理选择无,选择Git就要设置相应的仓库地址,用户名密码等远程从Git仓库拉取需要执行的代码
C. Build Step增加构建步骤,由于服务器是Linux系统,这里我们选择Execute shell
D. 输入一个shell命令,我们选择市面上最常见的python脚本执行,内容是hello world
E. 构建后操作暂时先不动

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_jenkins_03

 

以上设置完成后点击应用并保存,然后构建当前新建的项目,第一次构建会失败,因为要创建工作目录

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Jenkins_04

 由于Linux部署Jenkins默认工作目录为/var/lib/jenkins, 此路径可以在Dashboard > Manage Jenkins > Configure System当中

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_jenkins_05

 所以刚刚的默认工作空间就存放在这个路径下/var/lib/jenkins/worksoace/Test,当前目录下内容为空,我们创建一个python脚本

$ sudo nano hello.py

print("hello world!")

创建完成后保存退出,如果没有安装nano,可以yum/dnf, 或者Ubuntu什么系统用apt-get来安装,完成之后先尝试下本地能否执行这个脚本,当前我的系统安装的是python3.9, 所以执行命令如下

python3.9 hello.py
hello world!

如果下面打印出hello world!则说明当前环境没问题,如果提示python未安装之类的,可以通过命令安装python,和上面安装nano一样的方式,这个时候刷新以下Jenkins页面,确认当前的工作空间有了新的需要执行的hello.py文件

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Test_06

 然后重新执行以下Build Now,确认构建是否成功,当前显示success之后就是执行成功了

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_python_07

 那么当前只是完成了Linux上面的运行,但是在windows上执行并不是这样,那么我们下面就需要创建一个windows节点

二、创建windows子节点

 我们回到Dashboard > Manage Jenkins页面,然后选择Manage Nodes and Clouds

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_python_08

 

 选择新建节点Windows11,选择固定节点,点击Create创建

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Jenkins_09

 创建完成后会进入配置节点页面:
A. 节点名称保持不变 Windows11
B. 描述可选,根据个人喜好, win11 amd64
C. Number of executors,这个是Jenkins可以在此节点上构建的最大数目,这里我们设置2即可
D. 远程工作目录需要设置windows目录执行集成的工作目录,这里我们创建在D盘,D:\Jenkins-Test
E. 标签我这里输入win11
F.用法选择"Only build jobs with label expressions matching this node", 这个选项后面需要将任务绑定到这个节点,如果选择默认Use this node as much as possible,Jenkins只要这个节点空闲就会使用

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_python_10

G. 启动方式勾上Use WebSocket
H. 可用性保持默认 Keep this agent online as much as possible
I. 节点属性需要设置环境变量,否则执行的路径会找不到

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Test_11

 完成Nodes设置后点击保存,然后回到Nodes检查刚刚创建的Windows11节点,当前节点处于未连接状态

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Test_12

J. 将Windows11节点和Jenkins服务器联通, 点击Windows11的状态 

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_jenkins_13

K. 先下载anent.jar和Jenkins-agent.jnlp然后拷贝到Jenkins-Test目录,下载方式一个直接点击蓝色的agent.jar, 另一个通过浏览器输入: http://192.168.220.100:8080/computer/Windows11/jenkins-agent.jnlp来下载
L. 可以将上面的命令复制下来并保存到一个批处理里面用于执行
M. 等准备工作完成后,确保windows的机器安装了JAVA JDK, 并设置好了环境变量,我这里windows和Jenkins服务器选择的都是jdk_11.0.16.1,可以通过windows cmd输入javac -version和java -version确认环境变量设置是否成功
N. JDK完成后直接运行之前创建的批处理文件,确认windows节点连接是否成功

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Jenkins_14

 当出现Connected字样的时候说明链接已经成功了,这个时候去Jenkins前端检查是否状态刷新,

这里如果JDK版本太低运行会失败,最好保持同步的JDK版本,试过windows安装JDK8,Jenkins安装的是JDK11,java连接会失败

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Jenkins_15

 

这个时候回到刚刚创建的Test项目,然后进入配置页面,将Test项目和刚刚创建的Node-Windows11绑定,标签表达式不会输入的点击问号查询

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_jenkins_16

 然后Build Steps将之前的shell脚本删除,改成Execute Windows batch command, python hello.py

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_python_17

 这里需要注意windows下python默认程序设置了系统环境变量,否则执行会失败,需要执行的脚本最好也添加绝对路径

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_python_18

 运行成功后显示如下

jenkins pipeline从子节点拉取代码 jenkins配置windows从节点_Jenkins_19

tips: 这里需要注意,java连接的批处理不能退出,要保证一直连接状态

三、自定义集成测试

之前两个章节Linux内置节点和windows子节点环境就算配置完成了,接下来可以通过任意替换工作空间当中的脚本完成其他自定义的集成测试