In this blog, I am going to cover the process of configuring Jenkins after installing it to automate the process of code deployment on a web server. I will set the Jenkins scheduler for 1 minute which will keep on checking the Git code on a given branch and as soon as the code on that branch changes, Jenkins will start the build process to deploy the code. I am taking an example of a demo project code and going to explain the process in a step by step way.
Setup on Deployment Server (Server A)
1) Create a shell script file as pull.sh on the home directory of the web server where you are going to deploy the code. Open the file and write the following script:
sudo git pull origin master
Save the script file and close it.
Setup on Jenkins Server (Server B)
1) Before configuring the Jenkins we need to install sshpass on the server where Jenkins is installed and for that, we need to run the following command:
sudo apt-get install sshpass
2) Now open the Jenkins on a browser by typing the URL and port of Jenkins:
3) Log in to the Jenkins server by entering the username and password.
4) Click on the 'Create new job' link for creating a new job.
5) Under the item, name write the name of the job.
6) Click on the 'Freestyle project' click on the 'OK' button on the page. This will create a new job with the given name.
7) From the project, listing click on the project drop-down and click on 'configure' to configure the project.
8) Under Source Code Management selects the git option, please refer to the below screenshot:
9) Provide the repository URL and add credentials.
10) Under 'Branch Specifier' provide the Git branch name like:
11) Under build triggers select the Poll SCM and under schedule add * * * * * to pull every minute for any changes to deploy.
12)Under build click on execute shell to open the text area for executing the command. Enter the following command:
sshpass -p "password" ssh -T '-o StrictHostKeyChecking=no' username@$HOST sh pull.sh
If you want to know more about sshpass then click here.
13) Click on the apply button and then the save button.
Now, whenever new code is merged with the master branch Jenkins will initiate the build process automatically without any intervention. We can manually deploy the code by clicking on the 'Build Now' link from the left menu. If we want to see the deployment log then we can click on the build number or date under the 'Build History' section of the left menu. Anytime we can disable the project by clicking on the 'Disable Project' button of the project page.
We can configure SonarQube testing before code deployment through Jenkins which adds a code quality check before deployment but this I will explain in my next blog of Jenkins. If you want to know the Jenkins and SonarQube installation process and configuration then refer to my previous blog:
In that blog I have explained how we can install Jenkins on an Ubuntu the server now I am going to explain the process through which we can automatically deploy code from Git to a web server whenever there is a code merge in the master branch of Git. In case of any queries please leave a comment.
Jun 20, 2018, 7:10:34 PM
Hi Sir, thanks for sharing the info. Suppose i want to deploy the code in some linux server ,then how we can configure the linux server details in jenkins . please explain .
Jun 20, 2018, 11:43:06 PM
I have already explained the process Hanumanth. On Linux server you need to create a script where you can change the directory to your application deployment directory then pull the code from Git. From Jenkins apply the configuration to execute this script. Thats it. If you still have any query then please let me know the specific problem which you are facing.
Jul 5, 2018, 1:46:57 PM
I have 5 Jboss JVMs running on a remote linux box. How do I configure my jenkins to start/stop those JVMs. For example - Start/stop all JVMs in one go, or start/stop them by selection. Thanks
Sep 9, 2021, 1:49:55 PM
Hi, iam getting error at execute shell command. see below error. I've gone thru all sudo changes, but no luck. please help me out. + sshpass -p skptest ssh -T -o StrictHostKeyChecking=no firstname.lastname@example.org sh pull.sh sudo: no tty present and no askpass program specified Build step 'Execute shell' marked build as failure Finished: FAILURE
Leave a comment
Sep 23, 2020, 2:38:00 PM | Anurag Srivastava
Sep 6, 2020, 5:20:33 PM | Anurag Srivastava
Jan 16, 2020, 11:43:29 AM | Anurag Srivastava
Jan 14, 2020, 10:22:34 AM | Anurag Srivastava
Jan 7, 2020, 7:15:34 PM | Anurag Srivastava
Jan 6, 2020, 7:30:13 PM | Anurag Srivastava
Jun 21, 2018, 4:58:11 AM | Anurag Srivastava
Jul 16, 2018, 5:00:02 PM | Anurag Srivastava
Mar 9, 2019, 8:20:38 AM | Anurag Srivastava