DevOps Sem6 Labmanual
DevOps Sem6 Labmanual
Lab Manual
Second Year Semester-VI
Subject: DevOps
Even Semester
1
Institutional Vision and Mission
Our Vision
To foster and permeate higher and quality education with value added engineering, technology
programs, providing all facilities in terms of technology and platforms for all round development with
societal awareness and nurture the youth with international competencies and exemplary level of
employability even under highly competitive environment so that they are innovative adaptable and
capable of handling problems faced by our country and world at large.
Our Mission
The Institution is committed to mobilize the resources and equip itself with men and materials of
excellence thereby ensuring that the Institution becomes pivotal center of service to Industry, academia,
and society with the latest technology. RAIT engages different platforms such as technology enhancing
Student Technical Societies, Cultural platforms, Sports excellence centers, Entrepreneurial
Development Center and Societal Interaction Cell. To develop the college to become an autonomous
Institution & deemed university at the earliest with facilities for advanced research and development
programs on par with international standards. To invite international and reputed national Institutions
and Universities to collaborate with our institution on the issues of common interest of teaching and
learning sophistication.
OurQualityPolicy
Itisourearnestendeavourtoproducehighqualityengineeringprofessionalswhoare
innovative and inspiring, thought and action leaders, competent to solve problems
facedbysociety,nationandworldatlargebystrivingtowardsveryhighstandardsinlearning,tea
chingandtrainingmethodologies.
Dr. Vijay 2
Departmental VisionandMission
Vision
To impart higher and quality education in Computer Science with value added engineering and
technology programs to prepare technically sound, ethically strong engineers with social awareness.
To extend the facilities, to meet the fast changing requirements and nurture the youths with
international competencies and exemplary level of employability and research under highly
competitive environments.
Mission
To mobilize the resources and equip the department with men and materials of excellence to provide
knowledge in the thrust areas of Computer Science and Engineering. To provide learning ambiance
and exposure to the latest tools and technologies and the platforms to work on research and live
projects. To provide the diverse platforms of sports, technical, co-curricular and extracurricular
activities for the overall development of student with ethical attitude. To prepare the students to
sustain the impact of computer education for social needs encompassing industry, educational
institutions and public service. To collaborate with IITs, reputed universities and industries for the
technical and overall upliftment of students for continuing learning and entrepreneurship.
3
Departmental Program Educational
Objectives (PEOs)
1. Learn and Integrate
To provide Computer Engineering students with a strong foundation in the mathematical,
scientific and engineering fundamentals necessary to formulate, solve and analyze engineering
problems and to prepare them for graduate studies.
3. Broad Base
To provide broad education necessary to understand the science of computer engineering and
the impact of it in a global and social context.
4. Techno-leader
To provide exposure to emerging cutting edge technologies, adequate training & opportunities
to work as teams on multidisciplinary projects with effective communication skills and
leadership qualities.
5. Practice citizenship
To provide knowledge of professional and ethical responsibility and to contribute to society
through active engagement with professional societies, schools, civic organizations or other
community activities.
4
Departmental Program Outcomes (POs)
PO2: Problem analysis: Identify, formulate, review research literature, and analyze
complex engineering problems reaching substantiated conclusions using first principles of
mathematics, natural sciences, and engineering sciences.
PO3 : Design/development of solutions: Design solutions for complex engineering problems and
design system components or processes that meet the specified needs with appropriate consideration
for the public health and safety, and the cultural, societal, and environmental considerations.
PO4: Conduct investigations of complex problems: Use research-based knowledge and research
methods including design of experiments, analysis and interpretation of data, and synthesis of the
information to provide valid conclusions.
PO5: Modern tool usage: Create, select, and apply appropriate techniques, resources, and modern
engineering and IT tools including prediction and modeling to complex engineering activities with an
understanding of the limitations.
PO6: The engineer and society: Apply reasoning informed by the contextual knowledge to assess
societal, health, safety, legal and cultural issues and the consequent responsibilities relevant to the
professional engineering practice.
PO7: Environment and sustainability: Understand the impact of the professional engineering
solutions in societal and environmental contexts, and demonstrate the knowledge of, and need for
sustainable development.
PO8: Ethics: Apply ethical principles and commit to professional ethics and responsibilities and
norms of the engineering practice.
PO9: Individual and team work: Function effectively as an individual, and as a member or leader in
diverse teams, and in multidisciplinary settings.
PO11 : Project management and finance: Demonstrate knowledge and understanding of the
engineering and management principles and apply these to one’s own work, as a member and leader
in a team, to manage projects and in multidisciplinary environments.
PO12 : Life-long learning: Recognize the need for, and have the preparation and ability to engage in
independent and life-long learning in the broadest context of technological change.
5
Program Specific Outcomes: PSO
PSO1: To build competencies towards problem solving with an ability to understand, identify, analyze
and design the problem, implement and validate the solution including both hardware and software.
PSO2: To build appreciation and knowledge acquiring of current computer techniques with an ability
to use skills and tools necessary for computing practice.
PSO3: To be able to match the industry requirements in the area of computer science and engineering.
To equip skills to adopt and imbibe new technologies.
6
Index
Sr. No. Contents Page No.
1. List of Experiments 8
Course Objective, Course Outcome &
2. 9
Experiment Plan
3. CO-PO,CO-PSO Mapping 11
4. Study and Evaluation Scheme 14
5. Experiment No. 1 15
6. Experiment No. 2
7. Experiment No. 3
8. Experiment No. 4
9. Experiment No. 5
10. Experiment No. 6
11. Experiment No. 7
12. Experiment No. 8
13. Experiment No. 9
14. Experiment No. 10
7
List of Experiments
Sr. No. Experiments Name
Git installation and basic Git Commands
Perform installation of Git Bash and Explore usage of basic Git Commands.
a. Git installation
1
b. Git configuration
c. Starting A Project
d. Day-To-Day Work
e. Git branching model
f. Review your work
Explore Git Commands to
a. Tagging known commits
2 b. Reverting changes.
c. Synchronizing repositories.
d. Reverting Changes
Installation of Jenkins
3 To install and configure Jenkins to setup a build Job.
Continuous Integration
4
To build the pipeline of jobs in Jenkins, create a pipeline script to deploy an
application over Server
Case Study
10
Comparative study of Software Development Life Cycle – Waterfall Cycle vs
Agile vs DevOps.
8
Course Objective, Course Outcome &
Experiment Plan
Course Objective:
3 To Integrate and deploy tools like Jenkins and Maven, which is used to build, test
and deploy applications in DevOps environment
Course Outcomes:
CO1 To understand the fundamentals of DevOps engineering and be fully proficient with
DevOps terminologies, concepts, benefits, and deployment options to meet your
business requirements.
CO2 To obtain complete knowledge of the “version control system” to effectively track
changes augmented with Git and GitHub.
CO3 To understand the importance of Jenkins to Build and deploy Software Applications
on server environment.
CO4 Understand the importance of Selenium and Jenkins to test Software Applications.
CO5 To understand concept of containerization and Analyze the Containerization of OS
images and deployment of applications over Docker.
CO6 To Synthesize software configuration and provisioning using Ansible.
9
Experiment Plan:
Module Week Course Weightage
Experiments Name
No. No. Outcome
Git installation and basic Git Commands
Perform installation of Git Bash and Explore
usage of basic Git Commands.
a. Git installation CO2 05
1 W1 b. Git configuration
c. Starting A Project
d. Day-To-Day Work
e. Git branching model
f. Review your work
Explore Git Commands to
a. Tagging known commits
2 W2 b. Reverting changes. CO2 05
c. Synchronizing repositories.
d. Reverting Changes
Installation of Jenkins
3 W3 To install and configure Jenkins to setup a build CO3 04
Job.
Continuous Integration
W4, To build the pipeline of jobs in Jenkins, create CO3 04
4
W5 a pipeline script to deploy an application over
Server
Installation of Jenkins over Tomcat Server
5 W6 To install Tomcat Server on Windows and run CO3 02
Jenkins over Tomcat Server
W7, Test Software Applications
6 CO4 10
To Setup and Run Selenium Tests in Jenkins
W8
Using Maven
Containerization with Docker
7 W9 To understand Docker Architecture, install CO5 05
docker and execute docker commands to
manage and interact with containers.
Build an image with Docker
8 W10 CO5 05
To learn Dockerfile instructions, build an image
for sample web application on Docker Engine
To install and configure Pull based Software
9 W11 Configuration Management and provisioning CO6 10
tools using Ansible/Chef/Puppet
Case Study
Comparative study of Software Development CO1 10
10 W12 Life Cycle – Waterfall Cycle vs Agile vs
DevOps.
10
Mapping of COs with POs:
Subje Program Outcomes
Course Outcomes
ct PO PO PO PO PO PO PO PO PO PO PO PO
Weig (Weightage-100%) 1 2 3 4 5 6 7 8 9 10 11 12
ht
To understand the
CO1
fundamentals of
DevOps engineering
and be fully proficient
with DevOps 1 1 1 1 1 1 2 2
terminologies,
concepts, benefits, and
deployment options to
meet your business
requirements.
To obtain complete
CO2
knowledge of the
“version control
system” to effectively 1 1 1 1 1 2 2 1
track changes
augmented with Git
and GitHub.
To understand the
CO3
importance of Jenkins
PRATI
CAL to Build and deploy 2 2 2 2 2
100% Software Applications
on server
environment.
Understand the
CO4
importance of
Selenium and Jenkins 2 2 2 2 2
to test Software
Applications.
To understand concept
CO5
of containerization
and Analyze the
Containerization of 1 2 2 1 2 2
OS images and
deployment of
applications over
Docker.
To Synthesize
CO6
software configuration
2 2 2 2 2
and provisioning
using Ansible.
11
Mapping of Course outcomes with Program Specific Outcomes:
12
Study and Evaluation Scheme
Course Course
Teaching Scheme Credits Assigned
Code Name
CESL601 Skill Theory Practical Tutorial Theory Practical Tutorial Total
02+02* - - 02 - 02
Based
Lab IV –
DevOPs
Term Work:
Practical/Experiments:
1. The final certification and acceptance of term work ensures that satisfactory perfor
mance of laboratory work and minimum passing marks in term work.
13
Skill Based Lab IV – DevOPs
Experiment No. : 1
14
Experiment No. 1
1. Aim: Perform installation of Git Bash and explore usage of basic Git Commands.
a. Git installation
b. Git configuration
c. Starting A Project
d. Day-To-Day Work
e. Git branching model
f. Review your work
5. Theory:
How version control helps high performing development and DevOps teams prosper
Version control, also known as source control, is the practice of tracking and managing
changes to software code. Version control systems are software tools that help software
teams manage changes to source code over time. As development environments have
accelerated, version control systems help software teams work faster and smarter. They are
especially useful for DevOps teams since they help them to reduce development time and
increase successful deployments.
Version control software keeps track of every modification to the code in a special kind of
database. If a mistake is made, developers can turn back the clock and compare earlier
versions of the code to help fix the mistake while minimizing disruption to all team
members.
Good version control software supports a developer's preferred workflow without imposing
one particular way of working. Ideally it also works on any platform, rather than dictate
what operating system or tool chain developers must use. Great version control systems
facilitate a smooth and continuous flow of changes to the code rather than the frustrating
15
and clumsy mechanism of file locking - giving the green light to one developer at the
expense of blocking the progress of others.
a. Git Install
You can download Git for free from the following website: https://www.git-scm.com/
When you've successfully started the installer, you should see the Git Setup wizard screen.
Follow the Next and Finish prompts to complete the installation. The default options are
pretty sensible for most users.
To start using Git, we are first going to open up our Command shell.
For Windows, you can use Git bash, which comes included in Git for Windows. For Mac and
Linux you can use the built-in terminal.
Example
git --version
b. Configure Git
Run the following commands to configure your Git username and email using the following
commands, replacing Emma's name with your own. These details will be associated with any
commits that you create:
Now let Git know who you are. This is important for version control systems, as each Git
commit uses this information:
Example
Note: Use global to set the username and e-mail for every repository on your computer.
If you want to set the username/e-mail for just the current repo, you can remove global
Example
mkdirmyproject
cdmyproject
Now that we are in the correct directory. We can start by initializing Git!
Note: If you already have a folder/directory you would like to use for Git:
Navigate to it in command line, or open it in your file explorer, right-click and select "Git
Bash here"
Initialize Git
Once you have navigated to the correct folder, you can initialize Git on that folder:
Example
gitinit
Note: Git now knows that it should watch the folder you initiated it on.
Note: Create a new local repository. If [project name] is provided, Git will create a new
directory name [project name] and will initialize a repository inside it. If [project name] is not
provided, then a new repository is initialized in the current directory.
Downloads a project with the entire history from the remote repository.
d. Day-To-Day Work
17
$ git status
Displays the status of your working directory. Options include new, staged, and modified
files. It will retrieve branch name, current commit identifier, and changes pending commit.
$ git commit
Create a new commit from changes added to the staging area. The commit must have a
message!
$ git rm [file]
Remove file from working directory and staging area.
18
f. Review your work
$ git log [-n count]
List commit history of current branch. -n count limits list to last n commits.
$ git reflog
List operations (e.g. checkouts or commits) made on local repository
7. Viva Questions:
• What is version control?
• What is staging area?
• What do mean by repository?
• What care is to be taken when merging two branches?
8. References:
• Jon Loeliger and Matthew McCullough, Version Control with Git, O’Reilly Media,
Second Edition, 2012.
• Dennis Hutten, Git: Learn Version Control with Git A Step-By-Step Ultimate
Beginners Guide.
• Scott Chacon and Ben Straub, Pro Git_ Everything You Need to Know About Git,
apress, Second Edition
19
Skill Based Lab IV – DevOPs
Experiment No.: 2
20
Experiment No. 2
1. Aim: Create and fork repositories in GitHub
a. Creating a GitHub account
b. Synchronizing repositories.
c. Tagging known commits
d. Reverting changes
5. Theory:
The easiest way to get started is to create an account on GitHub.com (it's free).
21
Pick a username (e.g., octocat123), enter your email address and a password, and click Sign
up for GitHub. Once you are in, it will look something like this:
A repository is like a place or a container where something is stored; in this case we're
creating a Git repository to store code. To create a new repository, select New
Repository from the + sign dropdown menu (you can see I've selected it in the upper-right
corner in the image above).
Enter a name for your repository (e.g, "Demo") and click Create Repository. Don't worry
about changing any other options on this page.
Don't panic, it's simpler than it looks. Stay with me. Look at the section that starts "...or create
a new repository on the command line," and ignore the rest for now.
Type git and hit Enter. If it says command bash: git: command not found, then install
Git with the command for your Linux operating system or distribution. Check the installation
by typing git and hitting Enter; if it's installed, you should see a bunch of information about
how you can use the command.
cd Demo
Then enter:
This creates a file named README.md and writes #Demo in it. To check that the file was
created successfully, enter:
cat README.md
This will show you what is inside the README.md file, if the file was created correctly.
Your terminal will look like this:
To tell your computer that Demo is a directory managed by the Git program, enter:
git init
Then, to tell the Git program you care about this file and want to track any changes from this
point forward, enter:
So far you've created a file and told Git about it, and now it's time to create a commit.
Commit can be thought of as a milestone. Every time you accomplish some work, you can
write a Git commit to store that version of your file, so you can go back later and see what it
looked like at that point in time. Whenever you make a change to your file, you create a new
version of that file, different from the previous one.
24
git commit -m "first commit"
That's it! You just created a Git commit and included a message that says first commit. You
must always write a message in commit; it not only helps you identify a commit, but it also
enables you to understand what you did with the file at that point. So tomorrow, if you add a
new piece of code in your file, you can write a commit message that says, Added new code,
and when you come back in a month to look at your commit history or Git log (the list of
commits), you will know what you changed in the files.
b. Synchronizing repositories
Now, it's time to connect your computer to GitHub with the command:
Let's look at this command step by step. We are telling Git to add a remote called origin with
the address https://github.com/<your_username>/Demo.git (i.e., the URL of your Git repo on
GitHub.com). This allows you to interact with your Git repository on GitHub.com by
typing origin instead of the full URL and Git will know where to send your code.
Why origin? Well, you can name it anything else if you'd like.
Now we have connected our local copy of the Demo repository to its remote counterpart on
GitHub.com. Your terminal looks like this:
Now that we have added the remote, we can push our code (i.e., upload
our README.md file) to GitHub.com.
25
$ git push -u [remote] [branch]
Push local branch to remote repository. Set its copy as an upstream.
Once you are done, your terminal will look like this:
That's it! You have created your first GitHub repo, connected it to your computer, and pushed
(or uploaded) a file from your computer to your repository called Demo on GitHub.com.
$ git tag
List all tags.
d. Reverting changes
7. Viva Questions:
• What is difference between git and github?
• How do you push your project into remote repository?
• Is it possible to revert changes after commit? Is so, how?
8. References:
• Jon Loeliger and Matthew McCullough, Version Control with Git, O’Reilly
Media, Second Edition, 2012.
• Dennis Hutten, Git: Learn Version Control with Git A Step-By-Step Ultimate
Beginners Guide.
• Scott Chacon and Ben Straub, Pro Git_ Everything You Need to Know About
Git, apress, Second Edition.
27
Skill Based Lab IV – DevOPs
Experiment No.: 3
Installation of Jenkins
To install and configure Jenkins to setup
a build Job.
28
Experiment No. 3
1. Aim: To install and configure Jenkins to setup a build Job.
5. Theory:
Organizations can use Jenkins to automate and speed up the software development process.
Jenkins combines all stages of the development lifecycle, including build, document, test,
package, stage, deploy, static analysis, and many others.
Jenkins achieves Continuous Integration with the help of plugins. Plugins allow the
integration of Various DevOps stages. If you want to integrate a particular tool, you need
to install the plugins for that tool. For example: Git, Maven 2 project, Amazon EC2,
HTML publisher etc.
Jenkins Features:
11. Continuous Integration and Continuous Delivery: As an extensible automation
server, Jenkins can be used as a simple CI server or turned into the continuous delivery
hub for any project.
29
12. Easy configuration
Jenkins can be easily set up and configured via its web interface, which includes on-
the-fly error checks and built-in help.
13. Easy installation
Jenkins is a self-contained Java-based program, ready to run out-of-the-box, with
packages for Windows, Linux, macOS and other Unix-like operating systems.
14. Plugins
With hundreds of plugins in the Update Center, Jenkins integrates with practically every
tool in the continuous integration and continuous delivery toolchain.
15. Extensible
Jenkins can be extended via its plugin architecture, providing nearly infinite
possibilities for what Jenkins can do.
16. Distributed
Jenkins can easily distribute work across multiple machines, helping drive builds, tests
and deployments across multiple platforms faster.
1. Installation of JAVA: Download JDK 11/17 and choose windows 32-bit or 64-bit
according to your system configuration. Click on "accept the license agreement." Set
the Path for the Environmental Variable for JDK:
• Go to System Properties. Under the "Advanced" tab, select "Environment
Variables."
• Under system variables, select "new." Then copy the path of the JDK folder and
paste it in the corresponding value field. Similarly, do this for JRE.
• Under system variables, set up a bin folder for JDK in PATH variables.
• Go to command prompt and type the following to check if Java has been
successfully installed:
C:\Users\Aditi>java -version
2. Browse to the official Jenkins download page. Under the Downloading
Jenkins section is a list of installers for the long-term support (LTS) version of
Jenkins. Click the Windows link to begin the download.
Once the download is complete, run the jenkins.msi installation file.
30
3. The setup wizard starts. Click Next to proceed.
31
5. Under the Run service as a local or domain user option, enter the domain username
and password for the user account you want to run Jenkins with. Click Test
Credentials to verify the login data, then click Next to proceed.
Or
Using the Run service as LocalSystem option doesn’t require you to enter user login
data. Instead, it grants Jenkins full access to your system and services. Note that this is a
less secure option and is thus not recommended.
32
6.Enter the port number you want Jenkins to run on. Click Test Port to check if the
selected port is available, then click Next to continue.
7. Select the directory where Java is installed on your system and click Next to proceed.
33
8. Select the features you want to install with Jenkins and click Next to continue.
34
10. Once the installation is complete, click Finish to exit the install wizard.
Unblock Jenkins
After completing the installation process, you have to unblock Jenkins before you can
customize and start using it.
1. In your web browser, navigate to the port number you selected during the installation
using the following address:
http://localhost:[port number]
2. Navigate to the location on your system specified by the Unblock Jenkins page.
35
3. Open the initialAdminPassword file using a text editor such as Notepad.
5. Paste the password in the Administrator password field on the Unblock Jenkins page
and click Continue to proceed.
Customize Jenkins
Once you unlock Jenkins, customize and prepare the Jenkins environment.
1. Click the Install suggested plugins button to have Jenkins automatically install the
most frequently used plugins.
36
2. After Jenkins finishes installing the plugins, enter the required information on
the Create First Admin User page. Click Save and Continue to proceed.
3. On the Instance Configuration page, confirm the port number you want Jenkins to use
and click Save and Finish to finish the initial customization.
37
4. Click the Start using Jenkins button to move to the Jenkins dashboard.
5. Using the Jenkins dashboard, click Create a job to build your first Jenkins software
project.
38
Students should build a job and execute in Jenkins environment.
7. Viva Questions:
17. What is Continuous Integration?
18. What is CI/CD?
19. Which tools can be plugged with Jenkins?
8. References:
1. Jenkins: The Definitive Guide: Continuous Integration for the Masses, by John
Ferguson Smart Published by O'Reilly Media
39
Skill Based Lab IV – DevOPs
Experiment No.: 4
40
Experiment No. 4
1. Aim: To build the pipeline of jobs in Jenkins, create a pipeline script to deploy an application
overServer.
5. Theory:
A pipeline is a set of interconnected tasks that execute in a specific order. Additionally, Jenkins
Pipeline is a suite of plugins that help users implement and integrate continuous delivery pipelines
into Jenkins.Moreover, using Pipeline, you can create complex or straightforward delivery pipelines
as code via the Pipeline domain-specific language(DSL) syntax. Subsequently, the below states
represent a continuous delivery Pipeline: -
By using Jenkins pipeline continuous Integration, Testing, and Delivery is a seamless process, and
one can achieve all this using the Pipeline concept, which enables the project to be production-ready
always.
The declarative syntax is a new feature that used code for the pipeline. It provides a limited pre-
defined structure. Thereby, it offers an easy & simple continuous delivery pipeline. Moreover, it uses
a pipeline block
Unlike declarative syntax, the scripted pipeline syntax is the old traditional way to write
the Jenkinsfile on Jenkins web UI. Moreover, it strictly follows the groovy syntax and helps to develop
a complex pipeline as code.
41
• Pipeline - A pipeline is a set of instructions that includes the processes of continuous delivery. For
example, creating an application, testing it, and deploying the same. Moreover, it is a critical
element in declarative pipeline syntax, which is a collection of all stages in a Jenkinsfile. We declare
Pipeline { }
• Node - A node is a key element in scripted pipeline syntax. Moreover, it acts as a machine in Jenkins
that executes the Pipeline.
Node {}
• Stage - A stage consists of a set of processes that the Pipeline executes. Additionally, the tasks are
divided in each stage, implying that there can be multiple stages within a Pipeline.
pipeline{
agent any
stages{
stage('Build'){
........
}
stage('Test'){
........
}
stage('Deploy'){
........
}
stage('Monitor'){
........
}
}
}
Steps of execution:
1. Firstly, from the Jenkins dashboard, click on New Item on the left panel.
42
2. Secondly, enter the name for your pipeline, select Pipeline from the list. After that, click OK.
3. After that, go to the Pipeline tab, and from the Definition, the dropdown selects the Pipeline script.
4. The next step is to write your pipeline code in the web UI provided by Jenkins. Let us see a sample
pipeline example as available in Jenkins-
43
5. After that, click on Save. Conclusively, this finishes the process.
1. To create a declarative pipeline, you need to have a Jenkinsfile in place. Since I will be using the
project from my Github account, I have already placed the Jenkinsfile in my project.
2. For creating a Declarative Pipeline, you may follow step#1 and Step#2 from the scripted pipeline
creation steps stated above and then follow the below steps-
Go to the Pipeline tab, and from the Definition, the dropdown selects the Pipeline script from SCM
3. Go to the Pipeline tab, and from the Definition, the dropdown selects the Pipeline script from SCM
44
4. Now, you will get an option to input your Repository URL and credentials.
5. 4. Next, you may set the branch or let it be blank for any branch. In the script path, you need to
write the Jenkinsfile name that exists in your repository. Click on Save, and there you go, your
declarative pipeline is ready for use.
6. Now that you are all set with your pipelines, you can execute the same from your Jenkins UI. All you
need to do is select your pipeline and click on Build Now link on the left panel.
7. Once you run the pipeline, you will see the results displayed on the stage view as shown below-
45
Note: Students should build a pipeline job and demonstrate CI/CD in Jenkins
environment.
7. Viva Questions:
• What is pipeline?
• What is declarative pipeline?
• What is scripted pipeline?
8. References:
• Jon Loeliger and Matthew McCullough, Version Control with Git, O’Reilly
Media, Second Edition, 2012.
• Dennis Hutten, Git: Learn Version Control with Git A Step-By-Step Ultimate
Beginners Guide.
• Scott Chacon and Ben Straub, Pro Git_ Everything You Need to Know About
Git, apress, Second Edition.
46
Skill Based Lab IV – DevOPs
Experiment No.: 5
Experiment No.5
Aim: To install Tomcat server on windows and run Jenkins over Tomcat server.
11. Theory:
Tomcat server
It is an open-source Java servlet container that implements many Java Enterprise Specs such as
the Websites API, Java-Server Pages and last but not least, the Java Servlet. The complete name
of Tomcat is "Apache Tomcat" it was developed in an open, participatory environment and
released in 1998 for the very first time. It began as the reference implementation for the very
first Java-Server Pages and the Java Servlet API. However, it no longer works as the reference
implementation for both of these technologies, but it is considered as the first choice among the
users even after that. It is still one of the most widely used java-sever due to several capabilities
such as good extensibility, proven core engine, and well-test and durable. Here we used the
term "servlet" many times, so what is java servlet; it is a kind of software that enables the
webserver to handle the dynamic(java-based) content using the Http protocols.
Step 2 : Go to the official Apache Tomcat website and choose the latest stable version, as we
chose Tomcat 9.
Step 3 : Choose the appropriate binary distribution according to your machine configuration,
as I am going to choose 64 bit Windows zip.
48
Step 4 : Download the zip file and store it in any of your working directories. Also, unzip this
file after storing it in the working directory.
Step 5 : Now, open the command prompt, go to bin folder path, and type the below
command:
startup.bat
49
Step 6 : As soon as the command will execute, a new window "Tomcat" will open in which
some processing will happen.
Step 7 : Once processing will be done, just for validation whether the tomcat server is
installed on our system, open the browser, and hit the URL http://localhost:8080/. After
hitting the URL, we will see below the window as shown below, if there is a successful
installation of tomcat on our machine.
50
Step 8 :Configure the Post-build Action and Specify the Tomcat Server Details
51
Step 10 :Testing the Application
14. References:
• Tomcat: The Definitive Guide 2e Paperback – 6 November 2007by Jason
Brittain (Author), Ian F Darwin (Author)O’Reilly publication.
• https://www.jenkins.io/doc/book/
52
Skill Based Lab IV – DevOPs
Experiment No.: 6
53
Experiment No.6
Aim: Test Software Applications: To Setup and Run Selenium Tests in Jenkins Using Maven
Hardware / Software Required: Linux / Windows Operating System, Python, Java JDK
Theory:
Selenium WebDriver: Selenium WebDriver is a tool that allows interaction with web pages using
various programming languages, including Python. It enables the automation of web browsers, testing
web applications, and performing repetitive tasks.
Python Virtual Environment: A Python virtual environment is a self-contained directory that contains
all the necessary Python packages and modules for a project. It allows isolation of the project's
dependencies and avoids conflicts with other Python packages installed on the system.
Pytest: Pytest is a testing framework for Python that allows the creation of simple and scalable tests. It
provides various features like fixtures, parameterization, and plugins for writing complex tests.
Jenkins: Jenkins is a popular open-source automation server used for continuous integration and
continuous delivery (CI/CD) of software applications. It enables the automation of building, testing,
and deploying software applications.
General Steps-
Step 1: Install Selenium WebDriver for Python:
• Download and install Python on your machine.
• Install Selenium WebDriver for Python using pip.
Step 2: Create a Python virtual environment for Selenium tests:
• Create a new directory for your project.
• Change into the newly created directory.
• Create a new Python virtual environment for your project.
Step 3: Write basic Selenium tests using Python:
• Create a new Python file for your Selenium tests.
• Open the Python file and import the required packages.
• Create a new WebDriver instance and navigate to the web page you want to test.
• Find an element on the web page and interact with it.
• Use Pytest to write and run tests.
• Save the file and run the test locally to make sure it works.
Step 4: Integrate Selenium tests with Jenkins:
54
• Create a new Jenkins job.
• Add a new "Execute shell" step and enter the command to install Selenium and run Pytest.
• Save the job configuration and run the job to make sure it builds and runs the Selenium tests
successfully.
Detailed Steps:
1. Open a terminal or command prompt and create a new directory for your project using the
following command:
mkdir my-webapp-test
2. Change into the newly created directory using the following command:
cd my-webapp-test
3. Create a new Python virtual environment for your project using the following command:
source venv/bin/activate
5. Install the Selenium WebDriver for Python using the following command:
6. Download the appropriate WebDriver executable for your browser (Chrome, Firefox, etc.) and
operating system from the Selenium website and save it in your project directory.
8. Open the Python file and import the required packages using the following code:
driver = webdriver.Chrome()
10. Navigate to the web page you want to test using the following code
driver.get("https://www.example.com")
11. Find an element on the web page using the following code:
element = driver.find_element_by_name("q")
12. Enter text into the element using the following code:
element.send_keys("test")
55
element.submit()
Save the file and run the test locally to make sure it works. Optionally, you can use a testing
framework like Pytest to run and manage your Selenium tests. To run the tests in a continuous
integration environment like Jenkins, create a new Jenkins job by going to Jenkins home page -> New
Item -> Freestyle project. In the Build section, add a new "Execute shell" step and enter the following
command:
pytest my-test-file.py
Save the job configuration and run the job to make sure it builds and runs the Selenium tests
successfully. That’s it! You now have a basic setup for running Selenium tests with Python. You can
expand on this by adding more tests, integrating with other tools, and configuring Jenkins to run tests
automatically on a schedule or when code changes are pushed to the repository.
In this section, we will see how we download and install the Python for Windows platform.
To download the latest version of Python for Windows Platforms, refer the below
link: https://www.Python.org/downloads/
Once we clicked on the above link, the latest Release version list is shown, where we clicked on
the Python 3.8.1 version as we can see in the below screenshot:
56
o The Python-3.8.1 version window will appear on the screen, then scroll the page little-
bit and find the File section, and the click on the Windows x86-64 web-based
installer link for the Windows operating system as we can see in the below screenshot:
After downloading the Python for Windows-64 bit, we will be ready to install the
Python.
57
o Once we double-click on the downloaded executable file, the Python 3.8.1(64-
bit) setup window will appear on the screen, where we have two options available to
install the Python, which are:
o Install Now
o Customize installation
o We will click on the Customize installation, and select Add Python 3.8 to
path checkbox as we can see in the below image:
o After, click on the customize installation, the Optional Features will appear on the
screen, where we can select and deselect the features according to our requirements.
o Then, click on the Next button, to proceed further as we can see in the below image:
58
o Once, we clicked on the Next button; we have a list of Advanced Options available,
where we can select the options based on our needs and also make sure that the Install
for all users is selected.
o We can also customize the install location according to our convenience by clicking
on the Browse
o After that, click on the Install button, to install the Python as we can see in the below
screenshot:
o The installing process is getting started after clicking on the Install button as we can
see in the below screenshot:
59
o When the installation is done, we got the confirmation message as Setup was
successful, which means that the Python is installed successfully for
the Windows operating system.
o Then, click on the Close button, to close the setup window as we can observe in the
below screenshot:
After that, we will check whether Python is installed successfully and working fine or
not.
So for this, we will open our command prompt, and type the command as Python and
press the Enter key, and it will open the Python interpreter shell where we can
implement the Python program as we can see in the below image:
Once we successfully install the Python in our operation system, we will install the
Selenium libraries.
60
For this, we will execute the following command in our command prompt:
And, this command will successfully install the latest Selenium package i.e., Selenium
-3.141.0 added to the libraries as we can see in the below image:
After that executing the above command, it will create the Selenium
folder automatically having all the Selenium libraries as we can see in the below
screenshot:
Once we successfully install the Selenium libraries into Python, we are ready to
download Python IDE that is PyCharm.
61
o Refer the below link, to download the
PyCharm https://www.jetbrains.com/pycharm/download/#section=windows
o Once we clicked on the above link, we will get the below window, where will click on
the Download button under the Community section for the Windows
o After that, double-click on the executable file to install the PyCharm, and the PyCharm
Community Edition Setup window will appear on the screen, where we click on
the Next button to proceed further as we can see in the below image:
62
o In the next step, we can Choose Install location by clicking on the Browser button,
then click on the Next button for further process.
o In the next step, we have some Installation Options available, and we can select them
based on our requirements.
o After that, click on the Next button as we can see in the below image:
o Then, click on the Install button to install the PyCharm, as we can see in the below
screenshot:
63
o As we can see in the below image, the installation process is getting started.
o Then, click on the Finish button to finish the installation process as we can see in the
below image:
64
Create a new project and write the Selenium test script
Once we successfully install the PyCharm, we will open the PyCharm IDE for creating a
new project.
o First, open the PyCharm by Double-click on it, and click on the Create New Project as
we can see in the below image:
65
o After that, we will provide the project name as SeleniumTest, and click on
the Create button as we can see in the below image:
o After clicking on the Create button, we will get the below window:
66
Adding Selenium Test Scripts
For adding the Selenium test scripts in the PyCharm, follow the below process:
o Right-click on the SeleniumTest project, then go to New, and we can add any of the
options in the given list according to our requirements.
o But, here we are adding the Python file, so for this, we will add the Directory which
helps us to manage them separately as we can see in the below screenshot:
o After creating a Directory, we will right-click on the Demo Directory then go to New,
and select Python File from the pop-up menu as we can see in the below image:
Demo → New → Python File
67
o And, we provide a name to python file as Sample1.
o Then, press the Enter key as we can see in the below image:
o After that, we got the IDE where we can create or write our Selenium test Scripts.
For our testing purpose, we will first go to the Google Home page and
search javatpoint from there.
We are creating our sample test script step by step to give you a complete
understanding of how we write a Selenium test script in Python programming
language.
Step1
In the first step, we will type the following statement to import the web driver:
68
Step2
As we can see in the below screenshot, we have multiple types of browsers options
available, and we can select any browser from the list like Chrome, Edge, firefox,
Internet Explorer, opera, safari, etc.
Following are the sample code for opening the Google Chrome browser:
1. driver = webdriver.Chrome()
Step3
In the next step, we will be maximizing our browser window size, and the sample code
is as below:
1. driver.maximize_window()
Step4
1. driver.get("https://www.google.com/")
69
Step5
In this step, we are trying to locate the Google search text box with the help of
its Name attribute value.
o Right-click on the Google search text box, and select the Inspect option in the pop-
up menu as we can see in the below image:
o The developer tool window will be launched with all the specific codes used in the
development of the Google search text box.
o And, copy the value of its Name attribute, that is "q" as we can see in the below image:
1. driver.find_element_by_name("q").send_keys("javatpoint")
Step6
Once we identify the Google search text box, and we will identify the Google Search
button.
70
So for this, follow the below process:
o Right-click on the Google searchbutton, and select the Inspect option from the given
pop-up menu as we can see in the below image:
o The developer tool window will be launched with having all the specific codes used in
the development of the Google search button.
o Then, copy the value of its name attribute that is "btnK" as we can see in the below
image:
1. driver.find_element_by_name("btnK").send_keys(Keys.ENTER)
Step7
71
In the last step, we are closing the browser.
1. driver.close()
Our final test script will look like this, after completing all the above steps:
Note:
Import time: Time is a Python module, which is used to handle the time-related tasks such
as time.sleep().
Here, we are adding Keys libraries from Selenium, like in the above code, we are using
the Enter key instead of click() method to perform a particular scenario.
Once we are done with writing the Selenium test script, we will run our test scripts.
72
Here we will run our test scripts in two ways:
So, for this first, we will see how to run the Selenium test script in Python IDE.
o Right-click on the code, and select Run 'Sample1' from the popup menu as we can
see in the below screenshot:
o When we run this script it will give an exception because we don't have the Chrome
driver executable file as we can in the below image:
To overcome this exception, we will download the chrome driver executable from
below
link: https://chromedriver.storage.googleapis.com/index.html?path=79.0.3945.36/
73
o Once we click on the above link, we will click on the zip file based upon our operating
system platform. Like we have Windows platform that's why we clicked on thezip to
download the Executable file as we can see in the below screenshot:
o After downloading the exe file, we can paste this file to the Python folder and unzip it.
o Then, we will create one more folder called libraries as Browsers in the Python IDE.
o Right-click on the Project(SeleniumTest) → New → Directory as we can see in the
below screenshot:
o And, we will add all the driver's executable files in the Browsers folder manually.
o For this, we will copy the chrome driver exe file from the Python folder, and paste in
the Browser folder as we can see in the below image:
o Now go to PyCharm IDE, and copy the Absolute path of chromdriver.exe file as we
can see in the below screenshot:
74
1. driver=webdriver.Chrome(r"C:\Users\JTP\PycharmProjects\SeleniumTest\Brow
sers\chromedriver.exe")
Note: Here, we will use "r" to overcome the Unicode error.
As we can see in the below screenshot, if we do not put r in the code, it will generate
the Syntax Error.
o After that, we will run the sample1 once again, and it will execute the code successfully
as we can see in the below image:
The above test script will launch the Google Chrome browser and automate all the test
scenarios.
75
Run in Command Prompt
To run the above test script in the Command prompt, follow the below process:
o Copy the location of the Sample1.py file as we can see in the below image:
o And paste in the command Prompt, first go to the particular folder then enter the
below command:
Python Sample1.py
76
o Then, press the Enter key as we can see in the below screenshot that the sample test
case stared.
o And after automating all the scenarios, it will show the message as a sample test case
successfully completed.
Conclusion: By the end of this experiment, we got a basic understanding of how to use Selenium with
Python to test a web application. You will be able to set up a Python virtual environment for Selenium
tests, write basic Selenium tests using Python, and integrate Selenium tests with Jenkins. You will also
be able to expand on this by adding more tests, integrating with other tools, and configuring Jenkins to
run tests automatically on a schedule or when code changes are pushed to the repository.
77
Skill Based Lab IV – DevOPs
Experiment No.: 7
Experiment No. 7
1. Aim: To understand Docker Architecture, install docker and execute docker commands
78
to manage and interact with containers.
5. Theory:
Docker Containers are the ready applications created from Docker Images. Or you can
say they are running instances of the Images and they hold the entire package needed to
run the application. This happens to be the ultimate utility of the technology.
5. Docker Registry
Finally, Docker Registry is where the Docker Images are stored. The Registry can be either
a user’s local repository or a public repository like a Docker Hub allowing multiple users
to collaborate in building an application. Even with multiple teams within the same
organization can exchange or share containers by uploading them to the Docker Hub, which
is a cloud repository similar to GitHub.
6. Docker Architecture?
Docker Architecture includes a Docker client – used to trigger Docker commands, a Docker
Host – running the Docker Daemon and a Docker Registry – storing Docker Images. The
Docker Daemon running within Docker Host is responsible for the images and containers.
79
7. Install Docker Desktop on Windows
If you haven’t already downloaded the installer (Docker Desktop Installer.exe), you can
get it from Docker Hub. It typically downloads to your Downloads folder, or you can
run it from the recent downloads bar at the bottom of your web browser.
2. When prompted, ensure the Use WSL 2 instead of Hyper-V option on the
Configuration page is selected or not depending on your choice of backend.
If your system only supports one of the two options, you will not be able to select which
backend to use.
3. Follow the instructions on the installation wizard to authorize the installer and proceed
with the install.
4. When the installation is successful, click Close to complete the installation process.
5. If your admin account is different to your user account, you must add the user to
the docker-users group. Run Computer Management as an administrator and
navigate to Local Users and Groups > Groups > docker-users. Right-click to add the
user to the group. Log out and log back in for the changes to take effect.
Your Docker ID becomes your user namespace for hosted Docker services, and becomes your
username on the Docker forums. To create a new Docker ID:
80
1. Go to the Docker Hub signup page.
Your Docker ID must be between 4 and 30 characters long, and can only contain
numbers and lowercase letters. Once you create your Docker ID you can’t reuse it
in the future if you deactivate this account.
1. docker –version
This command is used to get the currently installed version of docker.
2. docker login
This command is used to login to the docker hub repository
3. docker run
Usage: docker run -it -d <image name>
This command is used to create a container from an image
4. docker build
Usage: docker build <path to docker file>
This command is used to build an image from a specified docker file
5. docker images
This command lists all the locally stored docker images
6. docker push
Usage: docker push <username/image name>
This command is used to push an image to the docker hub repository
7. docker pull
Usage: docker pull <image name>
This command is used to pull images from the docker repository(hub.docker.com)
8. docker ps
81
This command is used to list the running containers
9. docker stop
Usage: docker stop <container id>
This command stops a running container
Note: Students should install docker desktop, download any docker official image and
push updated official docker image on docker hub.
12. References:
• Jon Loeliger and Matthew McCullough, Version Control with Git, O’Reilly
Media, Second Edition, 2012.
• Dennis Hutten, Git: Learn Version Control with Git A Step-By-Step Ultimate
Beginners Guide.
• https://docs.docker.com/desktop/install/windows-install/
• Scott Chacon and Ben Straub, Pro Git_ Everything You Need to Know About
Git, apress, Second Edition.
82
Skill Based Lab IV – DevOPs
Experiment No.: 8
Experiment No. 8
1. Aim: To learn Dockerfile instructions, build an image for sample web application on
Docker Engine.
83
2. Objectives: From this experiment, the student will be able
• To understand Docker file and build an image for web applications
Docker Engine
5. Theory: Dockerfile
• Create a Dockerfile
Creating a Dockerfile is as easy as creating a new file named “Dockerfile” with your
text editor of choice and defining some instructions. The name of the file does not really
matter. Dockerfile is the default name but you can use any filename that you want (and
even have multiple dockerfiles in the same folder)
• docker build
The docker build command processes this file generating a Docker Image in your Local
Image Cache, which you can then start-up using the docker run command, or push to a
permanent Image Repository.The docker build command processes this file generating
a Docker Image in your Local Image Cache, which you can then start-up using the
docker run command, or push to a permanent Image Repository.
❖ Steps for the building an image for sample web application on Docker Engine.
Create a container image in Visual Studio Code
1. First, create a folder named PHP Hello Docker and open it in Visual Studio Code.
84
2. Open this folder in Visual Studio Code and create a file named hello.php or can take any
simple html file with hello.html .
<html>
<?phpecho"Hello world from php container ">
</html>
3. Next, create a file called Dockerfile (without any extension) and write the below code into
the file. Now with Docker file let construct an image.
FROM php
COPY ./ ./
EXPOSE 3000
CMD ["php","-S","0.0.0.0:3000"]
This is a very basic Dockerfile. Dockerfiles describe how to build your Docker image.
85
Note: Students should build web application, create image through Dockerfile and push
image on Docker hub.
7. Viva Questions:
• What is a dockerfile?
• What is Docker hub?
• How do you create a docker container from an image?
8. References:
• Jon Loeliger and Matthew McCullough, Version Control with Git, O’Reilly
Media, Second Edition, 2012.
• Dennis Hutten, Git: Learn Version Control with Git A Step-By-Step Ultimate
Beginners Guide.
• Scott Chacon and Ben Straub, Pro Git_ Everything You Need to Know About
Git, apress, Second Edition.
Experiment No.9
Aim: To install and configure software configuration management and provisioning tool
using ansible.
87
2. Objectives: From this experiment, the student will be able
• To understand DevOps practices for configuration management.
• To understand the working of Ansible configuration management tool.
17. Theory:
Configuration Management
The process of standardizing and administering resource configurations and entire IT infrastructure
in an automated way is Configuration Management. It is the concept where you put your server
infrastructure as code.It helps to systematically manage, organize, and control the changes in the
documents, codes and other entities during the SDLC.It aims to control costs and work effort
involved in making changes to the software system
1. Download the Cygwin installation file. This file is compatible with both the 32-bit and 64-bit
versions of Windows 10. It automatically installs the right version for your system.
2. Run the Cygwin installation file. On the starting screen of the installation wizard, click Next to
continue.
88
3. Select Install from Internet as the download source and click Next.
4. In the Root Directory field, specify where you want the application installed, then click Next.
5. In the Local Package Directory field, select where you want to install your Cygwin packages, then
click Next.
89
6. Choose the appropriate Internet connection option.
If you are using a proxy, select Use System Proxy Settings or enter the proxy settings manually with
the Use HTTP/FTP Proxy.
90
Click Next to continue.
7. Choose one of the available mirrors to download the installation files, then click Next.
8. On the Select Packages screen, change the View option to Full and type ‘ansible’ in the search bar.
Select both Ansible and Ansible Doc by checking the boxes under Src? and click Next to continue.
91
9. This screen lets you review the installation settings. To confirm and begin the install process, click
on Next.
10. The install wizard will download and install all the selected packages, including Ansible.
11. Once the installation is complete, select whether you want to add a Cygwin desktop and Start
Menu icon, then click on Finish to close the wizard.
92
Ansible Playbook with Jenkins Pipeline
If you are already installed Ansible Plugin on your Jenkins It will display in the Installed section.
Now we can see the Invoke Ansible Playbook option in the Build Environment section but we need
to configure Ansible path for Jenkins.
Go to Manage Jenkins > Global Tool Configuration > It will display Ansible on the list.
93
Now let’s Create New project to execute Ansible playbook.
Step 2) Goto Jenkins Home > New Item > Create New Freestyle Project.
Goto source code management section and add your code repository here you are free to use any of the
source code management platforms like Github, Gitlab and also Bit bucket.
Goto Build section and select Invoke Ansible Playbook. Once you select that option it will display
ansible-playbook configuration option like below.
94
Let see all option provided by Ansible Plugin.
• Ansible Installation: It will display all Ansible installation list that we are configured in Global
Tool Configuration > Ansible.
• Playbook path: We have to provide the Absolute or Relative path of our Ansible-playbook file.
Do not specify Inventory: We have to give our host list in the subdomain option.
Inline content: It means we are set our host list on the starting of our ansible-playbook file.
• Host subset: If we want to filter a specific set of the host from the provided Host file.
• Vault Credentials: IF you are using ansible vault then configure that credentials.
• become: If you want to set a specific user for ansible-playbook execution select and add the name
of that user.
95
• sudo: If you need to use a sudo user(root) then select this and add the name of that user.
Ad hoc commands are commands which can be run independently, to perform immediate
functions.
These commands are of one time usage.
Syntax of a typical ad hoc command:
Ansible [-m module_name] [-a args] [options]
Some of the ad hoc commands and their usage is listed below:
Commands Usage
20. References:
• “Ansible for DevOps” Server and Configuration Management for Humans by Jeff
Geerling Midwestern Mac publication, LLC, 05-Aug-2020
96
• “Ansible: Up and Running”, 3rd Editionby Bas Meijer, Lorin Hochstein, René Moser.
Released July 2022. Publisher(s): O'Reilly Media, Inc.
97
Skill Based Lab IV – DevOPs
Experiment No.: 10
98
Experiment No.10
Case Study
Aim: A Comparative study of Software Development Life Cycle – Waterfall Cycle vs Agile
vs DevOps
Objectives: To compares SDLC methodologies used in the industry and provides insights on
which approach to adopt for software development projects.
Waterfall Cycle: The Waterfall Cycle is a linear, sequential approach to software development
that involves completing each phase of the development process before moving onto the next
one. This model is popular among companies that have a well-defined scope, clear
requirements, and a predictable development environment. The Waterfall Cycle is beneficial
for projects that require a high level of documentation, regulatory compliance, and risk
management. However, it is less suitable for projects that require flexibility, rapid iteration,
and continuous feedback.
99
Comparative Study: The table below summarizes the differences between the Waterfall
Cycle, Agile, and DevOps models:
Waterfall
Cycle Predictable, well-defined process Inflexible, limited customer involvement
Note: In this case study students will summarize strengths and weaknesses of compared
methodologies in terms introduction, features advantages disadvantages etc. in a table in their
own words.
Additional Learning: The choice of SDLC methodology depends on the specific requirements
of the project. The Waterfall SDLC methodology is suitable for projects with clear and well-
defined requirements, whereas the Agile SDLC methodology is suitable for projects where
changes are expected. The DevOps SDLC methodology is suitable for projects that require
continuous deployment and release of new features. Ultimately, the company should choose
the approach that best fits its specific needs, taking into account factors such as budget, project
scope, and timelines.
Conclusion: Choosing the right SDLC model depends on the specific needs and goals of each
organization. The Waterfall Cycle is suitable for projects with a well-defined scope and clear
requirements, while Agile is ideal for projects that require flexibility, rapid iteration, and
frequent customer involvement. DevOps is a more advanced model that emphasizes
collaboration between development and operations teams and uses automation to streamline
the development process. By understanding the differences between these three models,
organizations can choose the one that best fits their needs and achieve successful software
development.
100