Jenkins besides
acting a Continuous integration tool, it allows other configuration options
which helps developers in many ways. One such facility provided by Jenkins is
the configuration of the master-slave.
The most basic
installation contains one Jenkins node called master operating itself. This
master handles all the tasks for your build system. The slave can be taught as
another Jenkins process which does the build jobs on behalf of the master.
In most cases
installing a slave doesn't change the behavior of the master. It will serve all
HTTP requests, and it can still build projects on its own.
If we remember a
executer is the one that does building the jobs in a parallel way. These
executors can be created dynamically to run light weight jobs used mostly for
the orchestration purposes. Once you install a few slaves you might find
yourself removing the executors on the master in order to free up master
resources.
Slaves are
computers that are set up to build projects for a master. Jenkins runs a
separate program called "slave agent" on slaves. When slaves are
registered to a master, a master starts distributing loads to slaves. Term Node
is used to refer to all machine that are part of Jenkins grid, slaves and
master.
The exact
delegation behavior depends on the configuration of each project; some projects
may choose to "stick" to a particular machine for a build, while others
may choose to roam freely between slaves.
Since each slave
runs a separate program called a "slave agent" there is no need to
install the full Jenkins (package or compiled binaries) on a slave. There are
various ways to start slave agents, but in the end the slave agent and Jenkins
master needs to establish a bi-directional communication link (for example a
TCP/IP socket.) in order to operate.
In this article we
will see how we can configure Jenkins Slaves for distributed build management
in our local environment. The same thing can be done with remote machines too.
1) Go to the Manage
jenkins -> Manage Nodes. We see a master Node being added on the left hand
pane. This is the only node available at this moment to process the request
like build.
2) Click on the new
Node. On the left pane
Enter the Name you
want for the new Node “slave”. Choose the Node to be a Dumb Slave. As said in
the screen it self a Dumb slave does not provide any high level of integrations
with any other slaves.
3) Now once the
Dumb slave is created, click on the newly created slave to configure that. We
need to configure the dumb slave
The launch Method
is one very important element that defines how the node will be configured. The
launch method contains,
Launch Slave Agents
on UNix Machine via SSH
Launch Slave Agents
via Java web Start
Launch Slave Via
execution of command on the Master
Let jenkins control
this windows slave as a windows service
We will be choosing
the Launch slave via java web Start since we are doing this on our local
machine. Java Web Start (also known as JavaWS, javaws or JAWS) is a
framework developed by Sun Microsystems (now Oracle) that allows users to start application
software for the Java Platform directly from the Internet
using a web browser. Choose other options based on your
requirement. Most cases in production environment we will be choosing
“Launch slave agents on unix Machine via
SSH”
Now save the
changes. Once the changes are completed we see the slave added to the Node
Dashboard
At this moment the slave1
created is not active. We can see a red mark on that. Now click on the Slave1
and we can see that Launch button available.
Click on the launch
button which will invoke a java web start slave agent like below,
Once the status on
the dialog box shows as connected we can see the status of the Slave on the
Node Dashboard as Active like below,
Now once the Slave
agent is active we need to make a job run the Slave Node. For this Choose a Job
already configured or configures a new one and go to the configuration for that
job.Check the "Restrict where this project can be run" then we will
see a Text box under where we need to
enter the Label expression which is the name of the Slave label that we created
earlier. Enter label of the slave we created “slaveNode”. Now we can see a test
saying "Label is serviced by 1 node" and click Ok
Now when we run the
build , we can see
Building Remotely
on slave1 (slaveNode1) in workspace
/opt/jenkins....
This is how we can
configure the Master -salve nodes of jenkins in localhost
We can see the
below output too,
No comments :
Post a Comment