Execute automation scripts using Pipeline in Jenkins
What is Jenkins?
Jenkins is a Continuous Integration (CI) Server or open-source automation tool written in Java with plugins built for Continuous Integration purpose. Jenkins supports the complete development lifecycle of software from building, testing and deploying a software development lifecycle.
For example, if the team is developing a project, Jenkins will continuously test your project builds and show you the errors in the early stages of your development that’s the reason Jenkins is more popular.
What is Jenkins Pipeline?
Jenkins Pipeline is a suite of plugins that supports implementing and integrating continuous delivery pipelines into Jenkins. Jenkins Pipeline is written into a Pipeline script. In Jenkins Pipeline it allows us to fill in details for the different steps of our Jenkins job.
Below is the diagram of the Jenkins Pipeline workflow.
Why do we use Jenkins pipeline?
Here are the reasons why you should use Jenkins pipeline:
- Jenkins pipeline is allowing multiple users to edit and execute the pipeline process.
- Pipelines are robust. So, if your server goes down then the pipeline will be automatically resumed.
- Users can pause the pipeline process and make it wait to resume until there is a new input from the user.
- Jenkins Pipelines allows you to run multiple jobs, and even use pipelines in a loop.
Jenkins Pipeline Concepts
Node: A node is a machine that executes an entire workflow. It is a main part of the scripted pipeline syntax. By default, master is a node for every single machine.
Stage: This block contains all the work that needs to be carried out. The work is specified in the form of stages. There can be more than one stage within this directive. Each stage performs a specific task. Stages show up as columns in the Pipeline Stage view with average stage times and colors for the stage result.
Step: Step is like a single command which performs a single action. The last required section is steps, which are defined in a stage. At least one step must be defined in the steps section. When a step succeeds it moves onto the next step. When a step fails to execute correctly the Pipeline will fail.
- For Linux and MacOS, sh is supported
- For Windows, bat or powershell can be used, as shown:
Configuration of Pipeline
A Pipeline is a way of defining some Jenkins steps using code, and automate the process of deploying software.
Pipeline defined in two different ways.
- Declarative Pipeline
- Scripted Pipeline
We are going to use the Scripted Pipeline which is following a more imperative programming model built with Groovy.
Install Pipeline Plugin in Jenkins
By using pipeline plugin, you can create your different stages in the pipeline view, and in Build History, you can check every built log with date and time and you can also view your logs on the console window. If your any stage is getting failed then stop the current stage as it would be marked as Failed too. Do not go to the next stage.
Here is how you can install the pipeline plugin in your Jenkins:
1. The settings for the plugin can be found under Manage Jenkins > Manage Plugins.
2. Click on Available Tab > Search Pipeline Plugin in the Filter box, if you have already installed the plugin, it will be displayed under the Installed tab and if you have not installed plugin previously, it shows up under the Available tab.
Create Jenkins Pipeline Project
Once you have successfully installed the pipeline plugin in your Jenkins, you will be getting displayed with Pipeline Project option in Item list.
1. Go to the Jenkins dashboard and select New Item from the dashboard.
2. Next, enter the name of the pipeline project and select pipeline project. Click on ok to proceed.
3. Click on Pipeline tab for move to the pipeline section.
4. Click on Pipeline Syntax for creating pipeline script and check Use Groovy Sandbox.
5. Pipeline Syntax page will open, “select checkout: check out from version control” option from Sample step
6. Select “Subversion” option from SCM dropdown (for svn version control).
7. In the modules section,
a) In Repository URL give the URL of the repository.
b)On Credentials field click on Add button select Jenkins option,
c) In Jenkins Credentials adding a credentials of svn. Give the username and password.
8. Select “Use svn update as much as possible” option from Check-out Strategy.
9. Click on Generate Pipeline Script It will generate a mess of code (in groovy language) which you can copy and paste in the pipeline. Then all you need to do is just paste it in the pipeline script area as displayed in the below image.
Note: Please refer to the below image which describes the overall steps that we have performed from step no. 5 to 9.
10. I am using ANT build tool for run automation script So, I call the targets (which target you created in your Automation project). Below are the steps for calling the ANT task.
Note: First, make sure that build tool is should be configured in Jenkins. Configure Build tool or JDK by clicking Manage Jenkins on the left sidebar and the go to the Configure System page and on this page configure of build tool (which build tool you used) and JDK.
a) Click on Pipeline Syntax (in Step #4 of creating pipeline project)
b) Select “bat: windows Batch Script” option from Sample Step
c) In Batch script give Build.xml file location of Automation Project (location of new checkout using pipeline in Jenkin’s workspace).
Note: Location of build.xml file as displayed in below screenshot (Jenkins workspace).
syntax which will be added in the “Batch Script” section:
d) Click on Generate Pipeline Script button and then copy generated code and paste in the Pipeline script as displayed in the below screenshot.
11. After creating the jobs, Click on Save. we’ll save our script
Now let’s quickly summarize the steps which we have performed, so please refer the below example:
1. First, I generated Groovy code from pipeline syntax for checkout Framework from SVN Repository. Copy generated groovy code and paste in stage(“Framework-checkout”).
NOTE: follow above #4 to #9 steps.
2. Second, I generated Groovy code from pipeline syntax for checkout Automation Project from SVN Repository. Copy generated groovy code and paste in stage(“Automation-checkout”).
NOTE: follow above #4 to #9 steps.
3. Third, I generated a Groovy code by executing the Automation script using ANT Target. Copy generated groovy code and paste in stage(“Execution”).
NOTE: follow above #10 step.
Run Jenkins Pipeline Project
1. Select Created pipeline from dashboard.
2. Click on the Build Now and the execution will start and getting displayed under Build History. In build History you can see all execution with date and time,
Here’s an overview of the builds and we’ll find the stage view of the pipeline, with the result of each stage:
Each output is accessible when hovering over a stage cell and clicking the Logs button to see the log messages printed in that step.
Each row also records the build number, date it was started, and any changelog entries from a version control system. Progress bars also indicate how long each stage is taking and how long it might still be expected to take, based on historical averages.
NOTE: If you want to edit existing pipeline then go to the dashboard > click on pipeline project > click on Configure option from left side and you can do changes in the configuration of Pipeline Project.