现在我们已经搭建好了基本的Jenkins环境,在这一集里,我们说一说如何管理节点。

进入“系统管理”中的“管理节点”。


创建Windos系统的奴隶节点

先创建一台安装了Win7系统的虚拟机,作为Jenkins构建的奴隶节点。比如我这台机器IP为172.16.12.81,用户名为user1,密码为123456。然后在C盘创建路径
C:\ci_jenkins
作为Jenkins操作的根目录。另外还需要在这台机器上安装JDK或JRE,我以前配置时这里如果使用64位的JDK会有问题,所以我也不再实验了,这里直接安装32位的JDK。

在Jenkins的“管理节点”页面上,点击“新建节点”,类型选择“Dumb
Slave”,名称比如叫“172.16.12.81_win7”,点击“OK”按钮进入设置页面。

其中“# of
executors”我们选择4,表示可以同时进行4个构建。

“Remote FS root”填写之前创建的目录
C:\ci_jenkins

“Labels” 是这样的,假如你的需求是要求同时在
WindowsXP,Win7这两个操作系统上构建,你就创建两个奴隶节点,一个安装WindowsXP系统,一个安装Win7系统,这两个节点的名称不一样,但Labels
可以设置成一样的
win,这样在创建Job时指定在Label为win的节点上构建时,两台机器都会进行构建,当然这里可以用空格分隔地添加几个Label。

“Launch method”这里我们选择“Let Jenkins control this Windows slave as a
Windows
service”,这种配置方式有点自虐,不过配置好的话是最好用的。

点击“高级”按钮,在“Path to java executable”输入java路径,特别注意,不能写成
java.exe

保存后,点击“Launch slave
agent”按钮。看到下面的错误信息:

别急,意料之中。在上个页面中你留意到有这么一个链接“subtle
problems”,里面就是配置windows系统奴隶节点的常见问题。

我们回到Win7这台奴隶节点,按照链接里的内容好好修理修理它。

首选要保证这个用户是本地的“Administrator”组成员,如果你和我一样是在安装操作系统时创建的用户,这一条是满足的。

点击“开始”按钮,输入“gpedit.msc”,打开“本地组策略编辑器”。

在“计算机配置”→“管理模版”→“系统”→“用户配置文件”中,将“在用户注销时不要强制卸载用户注册表”设置为“已启用”。

下面就是设置防火墙的策略了,这个我嫌麻烦,干脆把防火墙关闭了。

接下来打开“注册表编辑器”


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
下面创建一个 DWORD(32-位)值。

设置 LocalAccountTokenFilterPolicy 值
1。

按 Ctrl + F,搜索
“{76A64158-CB41-11D1-8B02-00600806D9B6}”,右键选择“权限”,需要注意的是,它在
HKEY_CLASSES_ROOT\CLSID 下。

点击“高级”

切换到“所有者”页签,将“当前所有者”修改为“Administrators”组。

再切换到“权限”页签,选择“Administrators”组,点击“编辑”按钮,修改成“完全控制”。

再把“所有者”切换回“TrustedInstaller”(NT
Service\TrustedInstaller)

注册表都设置好以后,最好注销再登录一下,让注册表生效。

在“计算机管理”的“服务”中,找到“Remote Registry
”服务。

启动它,并设置启动类型为“自动”。

现在重新在Jenkins页面上点击“Launch slave
agent”按钮。

看到已经成功连接的提示

回到首页,可以看到Win7的系统已经就绪。


创建类Unix系统(Linux,OSX等)的奴隶节点

对于类Unix系统,创建节点就要简单许多,一般默认都安装了SSH的服务,我们的计划是让Jenkins通过SSH来登录并管理奴隶节点。但通过用户名和密码访问SSH不是一个特别好的方式,我们可以配置通过私钥的方式来登录SSH。

比如我们以一台CentOS系统的虚拟机为例,假设IP为172.16.12.82。我们先在上面创建一个用于登录的用户jenkins。然后登录到这个用户。

Java代码  
  1. [root@svr82 ~]# useradd jenkins
  2. [root@svr82 ~]# su - jenkins
  3. [jenkins@svr82 ~]$

生成一个密钥对(这中间会有几次询问,都直接输入回车)。

Java代码  
  1. [jenkins@svr82 ~]$ ssh-keygen -t rsa
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/home/jenkins/.ssh/id_rsa):
  4. Created directory '/home/jenkins/.ssh'.
  5. Enter passphrase (empty for no passphrase):
  6. Enter same passphrase again:
  7. Your identification has been saved in /home/jenkins/.ssh/id_rsa.
  8. Your public key has been saved in /home/jenkins/.ssh/id_rsa.pub.
  9. The key fingerprint is:
  10. 6b:81:28:af:5e:54:bb:af:cf:e3:f5:2d:0a:aa:50:71 jenkins@svr82.vow.funshion.com
  11. [jenkins@svr82 ~]$

现在可以看到在jenkins用户的家目录下的 .ssh 目录下创建了两个密钥:公钥 id_rsa.pub 和私钥
id_rsa。

Java代码  
  1. [jenkins@svr82 ~]$ ls -l ~/.ssh/
  2. 总计 8
  3. -rw------- 1 jenkins jenkins 1675 10-14 18:26 id_rsa
  4. -rw-r--r-- 1 jenkins jenkins  412 10-14 18:26 id_rsa.pub

现在将公钥添加到这台主机的 authorized_keys
文件中,并修改权限为600

Java代码  
  1. [jenkins@svr82 .ssh]$ pwd
  2. /home/jenkins/.ssh
  3. [jenkins@svr82 .ssh]$ cat id_rsa.pub >> authorized_keys
  4. [jenkins@svr82 .ssh]$ chmod 600 authorized_keys

现在 id_rsa 和 id_rsa.pub 这两个文件不是必须要保留的这台服务器上,但你要保存好 id_rsa
因为这个是访问此服务器的私钥。

还有一点需要特别注意的是假如你的 ~/.ssh 目录是自己手动创建的,或者 id_rsa
从其他地方拷贝来的,如果此时发现无法通过私钥进行 ssh
连接时,请检查下面文件/目录的权限是否和我列出的一样。

Java代码  
  1. [jenkins@svr82 ~]$ ls -l ~/.ssh/authorized_keys
  2. -rw------- 1 jenkins jenkins 412 10-14 18:51 /home/jenkins/.ssh/authorized_keys
  3. [jenkins@svr82 ~]$ ls -l ~/.ssh/id_rsa
  4. -rw------- 1 jenkins jenkins 1675 10-14 18:26 /home/jenkins/.ssh/id_rsa
  5. [jenkins@svr82 ~]$ ls -ld ~/.ssh
  6. drwx------ 2 jenkins jenkins 4096 10-14 18:51 /home/jenkins/.ssh

回到Jenkis的页面上,我们先来配置一下访问这个服务器的“Credential”,在Jenkins页面的左侧快捷栏中点击“Credentials”

这里面有个凭据域的概念,其实他的目的就是,假如我们配置了很多登录服务器的凭据,通过各个域来分类整理这些凭据,比如所有访问服务器A的凭据都在一个域里这种情况。我们目前暂时先不创建域,直接选择默认的“Global
credentials”,点击左侧的“Add
Credentials”添加访问服务器的凭据。

在“Kind”里,我们选择“SSH Username with private
key”;“Username”这里输入登录上面服务器的用户名“jenkins”;“Private Key”这里选择“Enter
directly”,输入内容就是上面步骤里创建的 id_rsa
文件内容。

下面在这台CentOS服务器上装好JDK,准备工作基本上完成了。

Java代码  
  1. [root@svr82 ~]# java -version
  2. java version "1.6.0_25"
  3. Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
  4. Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)

下面在Jenkins的“系统管理”→
“管理节点”中点击“新建节点”,填写内容和之前创建Windows节点类似。

在“Launch method”中选择“Launch slave agents on Unix machines via
SSH”;“Credentials”这里选择我们刚刚创建的凭据。


特别要注意的是“JVM
Options”这里,“-Djava.awt.headless=true”不是每个类Unix系统都必须输入,但我发现在苹果的OSX系统中不设置会报错误“Can't
connect to window server - not enough
permissions.”。

连接成功!

现在我们有两个可以用的奴隶节点了:

[转]Jenkins使用 管理节点的更多相关文章

  1. Jenkins:管理节点

    Jenkins 管理节点 是管理所有即将在其上执行任务(JOB)的slave机器,包括各种OS类型的主机,都可以作为节点,因为Jenkins是java实现的,所以能安装JVM的OS都可以作为Jenki ...

  2. Jenkins使用教程之管理节点

    通常的情况下在我们的一个项目当中,项目会有多个分支系统,而我们不可能为每个分支系统都配置一个jenkins服务,这样既浪费资源,也增加构建部署的难度,为了解决这个问题jenkins给使用者提供了非常强 ...

  3. jenkins配置slave节点 构建项目并执行操作

    1.新建与配置结点 [系统管理]-> [管理结点]-> [新建结点] 2.配置slave 说明: Name: 定义slave的唯一名称标识,可以是任意字符串,通常设置为slave主机名.i ...

  4. Jenkins进阶-Slave 节点的配置(11)

    Jenkins的主节点无法满足当前的发布需求,所以我们需要增加一个从节点,我们是本着节约的模式,所以主从节点均需要有任务来进行构建: 1.系统管理->管理节点: 2.添加从节点,管理节点-> ...

  5. 【我的Android进阶之旅】Jenkins挂载slave节点,增强分布式编译的效率

    由于公司的Jenkins任务越来越多,而且所有的Android Jenkins任务都在同一台服务器上进行编译,而且该服务器配置Jenkins任务最多3个任务同时运行,所以有时候大家一起编译的时候,只能 ...

  6. jenkins集群节点构建maven(几乎是坑最多的)

    业务量变大时,单台的jenkins进行自动化构建部署,就显得没那么灵活,jenkins的集群并非像web服务器.mysql集群那样,jenkins的集群无需在额外的主机安装jenkins,但是用于ja ...

  7. Jenkins 进阶篇 - 节点配置

    当我们使用 Jenkins 构建的项目达到一定规模后,一个 Jenkins 服务可能承受不了负载,会导致很多的构建任务堆积,严重的话还会拖垮这台服务器,导致上面的服务无法使用.例如我们公司目前在 Je ...

  8. Jenkins凭证管理

    目录 一.简介 二.管理凭证 三.常用凭证 保密文本 账号密码 保密文件 账号秘钥 四.优雅使用凭证 保密文本 账号密码 保密文件 五.凭证插件 集成HashiCorp Vault pipeline ...

  9. 8个节点MySQL-cluster安装和配置,含两个管理节点

    换装jdk [root@clusterdata1 software]# rpm -qa | grep javajava-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3. ...

随机推荐

  1. [原创]WPF应用MediaPlayer播放声音断续、不全解决方案

    1.检查扬声器和驱动程序. 测试方法:首先,应用Windows Media Player播放器播放,看是否有问题,如果有问题,基本断定是驱动程序问题.其次,点击扬声器,选择测试,查看扬声器是否好用,如 ...

  2. 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器

    在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个东东. .NET Framework有自 ...

  3. iOS开发_内存泄漏、内存溢出和野指针之间的区别

    今天,在工作群中,被问到了内存泄漏和野指针指向的区别,自己答的不是很好,特意回来查了资料,在博文中总结一下经验,欢迎指正. 内存泄漏:是指在堆区,alloc 或new 创建了一个对象,但是并没有放到自 ...

  4. i7 4790 z97-ar ssd 固态硬盘 装机的一些经历

    今天电脑终于装好了,我于七夕情人节前后的几天配了一台台式机用开发,期间遇到了一些问题与大家分享一下,希望对一些朋友有帮助. 1 买HIMD线,各个零件全部组装好后,我意识到一个问题没买HIMD线,我的 ...

  5. SQL表旋转

    在制作报表的时候,有时候会碰到基础资料是依照时间区间去一笔一笔记录的资料,但是使用者在看报表的时候想要将时间区间以横向的方式呈现不是直向的情况出现,又或者基础资料的表数据结构是横向的而使用者在看报表的 ...

  6. c语言操作一维数组-3

    C语言选择题#includemain(){double a[15],k;k=fun(a);} 则以下选项中错误的fun函数首部是 ( D)A.double fun(double a[15]) B.do ...

  7. 作业七:团队项目——Alpha版本冲刺阶段008

    今日进度:组内成员讨论 今日安排:组内成员分工

  8. Cordova+ionic 开发hybird App --- 开发环境搭建

    Cordova 开发hybird App 开发环境搭建 一.一些基础概念: Ant : 简单说来可以这么理解,如果你用记事本写JAVA程序,然后在cmd里输入javac命令编译它,但是有一天你发现每次 ...

  9. c/c++面试题(7)零碎知识总结

    1.变量的声明和定义有什么区别? 声明:变量的声明做了两件事情 a.告诉编译器这个变量已经匹配到一块内存上了,下面的代码用到的变量或对象是在别处定义的. 声明可以出现很多次. b.告诉编译器这个变量名 ...

  10. linux msql

    安装mysql 1.使用rpm 安装mysql 或者使用yum安装 使用rpm 安装 下载 Centos 7 所需要的mysql包 tar -xf 解压整合包 根据依赖 安装 common>li ...