Jenkins连接Slave节点的设置

Jenkins连接Linux和Windows子节点的推荐方式是不同的,本文根据作者实际使用经验分别进行说明。Linux不同发行版通过SSH的连接方式应该都是相同,但Windows的不同版本可能会有差异,限于精力有限没有一一测试,此处会特别说明在使用Windows10 64位简体中文家庭版时遇到的一个坑。

主节点环境

系统: CentOS 7.6.1810

Jenkins: ver2.164.3 (使用Docker jenkinsci/blueocean镜像部署)

工作环境: macOS Mojave

Linux子节点: 命名为slave-linux,使用root用户

Windows子节点: 命名为slave-win10

连接Linux子节点

  1. 在macOS上使用ssh-keygen命令创建一个给Jenkins连接子节点使用的SSH密钥对,文件名指定为id_rsa_jenkins。创建完毕后,~/.ssh目录下会生成”id_rsa_jenkins”和”id_rsa_jenkins.pub”两个文件。

  2. 运行ssh-keysan命令获取主机slave-linux的公钥指纹`ssh-keygen -p [sshd port] [IP(slave-linux)],运行结果类似:

    如图所示 如图显示了多种加密算法的指纹,任意选择一种主节点系统支持的即可,此处选择ssh-rsa类型的指 纹。”#“开头的行为注释,复制注释行”# 172.20.80.60:22022 SSH-2.0-OpenSSH_7.4”下的一整行数据到系统剪贴板。

  3. 登录到主机点系统,进入到Jenkins主目录(此处在使用Docker部署的时候,采用挂载系统目录的方式)。再进入到.ssh目录(如果没有的话则创建,注意确定当前登录用户是否有相关文件操作权限)。创建”known_hosts”文件,并粘贴刚才复制到系统剪贴板的子节点主机公钥指纹。

  4. 回到macOS终端,运行命令cat ~/.ssh/id_rsa_jenkins.pub | pbcopy复制第1步生成的公钥数据。

  5. 登录到slave-linux,打开(没有则先创建)~/.ssh/authorized_keys文件,粘贴第4步复制的公钥数据。

  6. 以管理员身份在浏览器中打开Jenkins,添加一个Credentials

    如图所示 注意username为之前步骤使用的slave-linux主机的登录用户,此处为root。将第一步创建的id_rsa_jenkins文件内容粘贴到Key输入框中,保存。

  7. 进入到节点管理界面,创建节点的其它操作此处不再描述,只说明启动方式(Launch method)的设置,注意点击”Advanced“按钮展开设置端口号及其它参数。

    如图所示

  8. 点击”Launch Agent“按钮连接子节点。

  9. 这种方式连接是相对安全的,可以避免中间人攻击。

连接Windows子节点

  1. Launch method“选择Launch agent via Java Web Start,一定不要选择其它方式折腾。

  2. 登录slave-win10主机,打开浏览器以管理员身份登录Jenkins,进入到节点管理,点击”Launch“按钮下载slave-agent.jnlp文件到本机”Jenkins Home“目录。

    如图所示

  3. 运行该文件建立与主节点的连接

    如图所示

  4. 特别注意,可以选择以服务形式运行Agent文件,但是,当选择这种方式时,我通过Jenkins驱动Unity打包会失败,反复实验发现不以服务形式运行就OK,具体原因不明,总之,如果以服务形式运行如果出现问题,可以尝试一下不以服务形式运行。另外,一旦在Jenkins中修改节点的名称就需要重新下载slave-agent.jnlp文件重新连接。

    如图所示

Contents