Jenkins Master Your main Jenkins server is the Master. The Master’s job is to handle Scheduling build jobs. Dispatching builds to the slave...
Jenkins Master
Your main Jenkins server is the Master. The Master’s job is to handle
Jenkins Slave
A Slave is a Java executable that runs on a remote machine. The following are the characteristics of Jenkins' Slaves
We can configure the slave with any operating systems. cross-platform ( Linux to Windows) also can do the slave configuration.
Once you choose the operating system make sure both jenkins master and jenkins slave installed the same Java version.
Once Java is Installed on the slave server, we need to Register the Slave node in Jenkins, for that we need to log in to the Jenkins Dashboard and configure it.
Configure the Slave:
Click Manage Jenkins --> Nodes --> Click New Node, Click the Create option to configure the slave node in jenkins
1. Name:
give any name that you need to identify easily for a slave.
2. Description :
we need to type the description.
Optional human-readable description for this agent.
This could include information useful to users, such as how many CPU cores the agent has, how much RAM it has installed, its physical location, etc.
3. Number of executors :
we need to mention the executor count,
The maximum number of concurrent builds that Jenkins may perform on this node.
A good value to start with would be the number of CPU cores on the machine. Setting a higher value would cause each build to take longer, but could increase the overall throughput. For example, one build might be CPU-bound, while a second build running at the same time might be I/O-bound — so the second build could take advantage of the spare I/O capacity at that moment.
Agents (nodes that are not built-in nodes) must have at least one executor. To temporarily prevent any builds from being executed on an agent, use the Mark this node temporarily offline button on the agent's page.
For the built-in node, set the number of executors to zero to prevent it from executing builds locally on the controller. Note: The built-in node will always be able to run flyweight tasks including Pipeline's top-level task.
4. Remote root directory:
we need give the directory path of the client node(slave node), i am giving /opt/build
An agent needs to have a directory dedicated to Jenkins. Specify the path to this directory on the agent. It is best to use an absolute path, such as /var/jenkins or c:\jenkins. This should be a path local to the agent machine. There is no need for this path to be visible from the controller.
5. Label:
The label we need to give as unique that we are going to use in the jenkins job.
Labels (or tags) are used to group multiple agents into one logical group.
6. Usage:
Controls how Jenkins schedules build on this node.
Use this node as much as possible
This is the default setting.
In this mode, Jenkins uses this node freely. Whenever there is a build that can be done by using this node, Jenkins will use it.
Only build jobs with label expressions matching this node
In this mode, Jenkins will only build a project on this node when that project is restricted to certain nodes using a label expression, and that expression matches this node's name and/or labels.
This allows a node to be reserved for certain kinds of jobs. For example, if you have jobs that run performance tests, you may want them to only run on a specially configured machine while preventing all other jobs from using that machine. To do so, you would restrict where the test jobs may run by giving them a label expression matching that machine.
Furthermore, if you set the # of executors value to 1, you can ensure that only one performance test will execute at any given time on that machine; no other builds will interfere.
7. Launch method:
(click websocket → Use WebSocket to connect to the Jenkins master rather than the TCP port. See JEP-222 for background.)
If you are clicking the disable work directory you will not get the logs inside the directory.
Controls how Jenkins starts this agent.
Launch the agent by connecting it to the controller
Allows an agent to be connected to the Jenkins controller whenever it is ready.
In one mode, Java Web Start is used. In this case, a JNLP file must be opened on the agent machine, which will establish a TCP connection to the Jenkins controller. (Other launch methods use a JNLP file but not Java Web Start, or do not use a JNLP file at all.)
This means that the agent need not be reachable from the controller; the agent just needs to be able to reach the controller. If you have enabled security via the Configure Global Security page, you can customize the port on which the Jenkins controller will listen for incoming agent connections.
By default, the agent will launch a GUI, but it is also possible to run an agent without a GUI, for example as a Windows service.
Launch agent via execution of command on the controller
Starts an agent by having Jenkins execute a command from the controller. Use this when the controller is capable of remotely executing a process on another machine, e.g. via SSH or RSH.
Launch agents via SSH
Starts an agent by sending commands over a secure SSH connection. The agent needs to be reachable from the Jenkins controller, and you will have to supply an account that can log in on the target machine. No root privileges are required.
8. Availability :
Controls when Jenkins starts and stops this agent.
Keep this agent online as much as possible
In this mode, Jenkins will keep this agent online as much as possible.
If the agent goes offline, e.g. due to a temporary network failure, Jenkins will periodically attempt to restart it.
Bring this agent online according to a schedule
In this mode, Jenkins will bring this agent online at the scheduled time(s), remaining online for a specified amount of time.
If the agent goes offline while it is scheduled to be online, Jenkins will periodically attempt to restart it.
After this agent has been online for the number of minutes specified in the Scheduled Uptime field, it will be taken offline.
If Keep online while builds are running is checked, and the agent is scheduled to be taken offline, Jenkins will wait for any builds that may be in progress to complete.
Bring this agent online when in demand, and take it offline when idle
In this mode, Jenkins will bring this agent online if there is demand, i.e. there are queued builds that meet the following criteria:
They have been in the queue for at least the specified demand delay period
They can be executed by this agent (e.g. have a matching label expression)
This agent will be taken offline if:
There are no active builds running on this agent
This agent has been idle for at least the specified Idle delay period
Click save to save the configuration.
After saving the Agent go to manage jenkins → Manage nodes and clouds Click the newly created slave node you will see a few steps to connect the master to the slave node
If your Jenkins Ip and the Agent downloaded Ip were different then you should need to update the current public IP in the Jenkins system configuration.
Change the jenkins host ip address to connect the agent slave to the master. Go to manage jenkins→ system → jenkins location change the current ip address
After Changing the ip address in jenkins connecting the node should match the new ip address
Now Download the agent.jar file from the slave server's /opt path and execute the below commands. Command: wget http://13.58.23.51:8080/jnlpJars/agent.jar
Run the below command to connect the agent to the master, If you want to connect in detach mode continuously we need to give " & " at the end of the command java -jar agent.jar -jnlpUrl http://13.58.23.51:8080/computer/slave%2Dnode1/jenkins-agent.jnlp -secret 78f9081fc9a41194fdd7cd11e4cc2b78fef38ca5276038828be17a73fcb90a65 -workDir "/opt/build" &
After setting up the master server you will get the master and slave server offline issue, we need to fix that issue then only we can be able to use the master-slave.
ERROR FIXING:
To fix the issue click Node Monitoring change, Change the Free Disk Space Threshold from 1GB to 10MB, and click Apply and Save.
Now create the New FreeStyle Job and inside the config, we need to click the option called Restrict where this project can be run.
Inside the label expression, we need to give our slave-node server’s label, which is already given during the slave configuration.
Now save and build the job and check your jenkins job logs.
The Above one was the Testing Jenkins job, if you have a freestyle job with SCM or Maven jobs you can use master-slave with your existing Jobs.