0% found this document useful (0 votes)
5 views12 pages

Com769 cw1

This document outlines the importance of implementing a CI/CD pipeline in modern software development, highlighting its role in automating testing, integration, and deployment processes. It contrasts traditional waterfall methodologies with Agile and DevOps practices, emphasizing the benefits of continuous integration and delivery for improving project management and software quality. The paper also details a practical implementation of a CI/CD pipeline using MS Azure and GitHub, demonstrating its efficiency and effectiveness in streamlining development workflows.

Uploaded by

drfc14
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views12 pages

Com769 cw1

This document outlines the importance of implementing a CI/CD pipeline in modern software development, highlighting its role in automating testing, integration, and deployment processes. It contrasts traditional waterfall methodologies with Agile and DevOps practices, emphasizing the benefits of continuous integration and delivery for improving project management and software quality. The paper also details a practical implementation of a CI/CD pipeline using MS Azure and GitHub, demonstrating its efficiency and effectiveness in streamlining development workflows.

Uploaded by

drfc14
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

COM769 – Coursework 1

Creating a CI/CD Pipeline

Gabriel Nogueira Nicolau – B00575451

PURPOSE

Show deep understanding of modern development and deployment concepts


and gain an appreciation of continuous integration, continuous delivery,
scalable architecture, and deployment.
Table of Contents

I – INTRODUCTION.......................................................................................................................... 3

II - PROBLEM STATEMENT............................................................................................................ 4

III - IDENTIFIED APPROACHES TO ADDRESS THE PROBLEM............................................ 5

IV - SOLUTION DESIGN................................................................................................................... 6

V - QUANTIFICATION OF SOLUTION PERFORMANCE........................................................... 6

VI – CONCLUSION........................................................................................................................... 10

REFERENCES................................................................................................................................... 12

COM769
Scalable Advanced Software Solutions 2
I – Introduction
This paper investigates how Agile, DevOps and CI/CD Pipelines have emerged to address
issues faced with older, more traditional implementation methods which caused bottle necks,
outdated features implementation and frustration among innovative development teams.

Although Agile, DevOps, and CI/CD terms are used interchangeably, they describe three
different aspects of the software development pipeline.
 Agile refers to managing the process and workflow. Agile teams are
constantly listening to requirements and requests.
 DevOps is a culture aiming in removing corporation walls and brings teams
together to enable agile development.
 CI/CD focuses on software related lifecycles and removes bottle necks
caused by human testing through automation.

The focus of this paper will be on the CI/CD pipeline integration and how it relates to
improved project management, build processes, deployment, and testing.
CI/CD combines the practices of continuous integration and continuous delivery. CI/CD
automates much, or all the manual human intervention traditionally needed to get new code
from a commit into production, encompassing the build, test (including integration tests, unit
tests, and regression tests), and deploy phases, as well as infrastructure provisioning. With a
CI/CD pipeline, development teams can make changes to code that are then automatically
tested and pushed out for delivery and deployment. Get CI/CD right and downtime is
minimized, and code releases happen faster. [1]

Some of the issues that a CI/CD Pipeline can resolve include but are not limited to.
 Project management efficiency by providing flexibility in the outcome and allowing
customers to implement changes and fixes as the project progresses.
 Frequency of code revisioning to maintain cutting edge technology prominent and
satisfying developers who are creative and ambitious.
 Streamlines build processes by automating testing and deployment.
 Removes bottlenecks from testing by removing the human element.

A strong argument for the use of Agile methodology and the CI/CD Pipeline can be
envisioned in the figure below.
The key word here is ‘continuous’ and CI/CD is the backbone of a DevOps methodology,
bringing developers and IT operations teams together to continuously build, test and deploy
software [2].

Figure 1 - CI/CD relationship [2]

Implementing a CI/CD pipeline is paramount for modern software development due to its
ability to streamline the development process, enhance software quality, and accelerate time-
to-market. The constant testing and reliable deployment of code not only mitigate risks
associated with human error but also establish a consistent, high-quality output. Moreover,
the collaborative environment it fosters, enabling team members to work on the latest
codebase, alongside its adaptability and scalability, ensures that projects of varying
complexities can be efficiently managed. Ultimately, the rapid, reliable deployment of new
features and updates leads to heightened customer satisfaction, making the implementation
of a CI/CD pipeline a critical asset in the competitive world of software development.

COM769
Scalable Advanced Software Solutions 3
II - Problem Statement
Traditionally, software deployment followed the waterfall methodology.
Waterfall methodology is a project management approach that emphasizes a linear
progression from beginning to end of a project. [3].

Figure 2 - Waterfall Methodology design structure [3]

Progress on a waterfall concept flows downwards and each stage is generally completed
before the next stage can begin. Although this method provides a clear vision of what the final
product will look like, it has some major drawbacks such as:
 No feedback from the customer or client until the end of the project.
 Any update on features must wait until the next waterfall cycle.
 Delay in new features implementation or optimisation

This means that once a project is complete, then the developers can start on a new project
with advanced features and improved stability, however, with that in mind, when said project
is delivered, it may already be out of date.
A good case study for this is Microsoft Windows. Once Windows 95 was released, then work
on Windows 98 began, but any features that were thought of after the waterfall concept had
been drawn up would need to wait until Windows 2000 work had begun.
This method provided a lot of rigidity and inflexibility which led to the birth of the Agile
methodology in the early 2000s.

COM769
Scalable Advanced Software Solutions 4
III - Identified Approaches to Address the Problem
In Section “I – Introduction” the benefits and uses of a CI/CD Pipeline are outlined, however
there are several approaches that can be taken to address the issues at hand such as:
 Kanban boards are visual tools used in Agile project management methodologies to
represent work as it progresses through various stages. Like a white board with sticky
notes.
o Impacts and benefits: These include workflow visualisation, improved
efficiency, and enhanced collaboration.

Figure 3 - Kanban Board design [4]

 Unit testing is a software development process in which the smallest testable parts of
an application, called units, are individually scrutinized for proper operation. Software
developers and sometimes QA staff complete unit tests during the development
process. [5]
o Impacts and benefits: Allows for early detection of bugs and issues within the
code and provides an enhancement in accuracy and consistency of delivery
which equates to satisfied customers.

Figure 4 - Unit Test Model [6]

 Scrums and Sprints: While scrum is a framework used for Agile software
development, sprints are a fundamental component within the Scrum framework.
Sprints are focused goals within a timed duration (1-4 weeks for example). These
allow a timely review of effort and accomplishments and allows development to
manage large tasks in sub sections and to put focus on the larger tasks as they arise.
o Impacts and benefits: Transparency between teams on what is being worked
on and how much effort is involved, allows for improved decision making and
flexibility on end goals as new challenges arise.

COM769
Scalable Advanced Software Solutions 5
Figure 5 - Scrums and Sprint Model [7]

IV - Solution Design
The focus of this paper is on the implementation of a CI/CD Pipeline which will automatically
integrate, build, and deploy a test code and thus the following chapter will highlight, in detail,
the creation and implementation of a CI/CD pipeline using MS Azure and GitHub.

Prerequisites:
Requirements include:
 Access to a GitHub account
 An Azure DevOps Organisation
 Ability to run pipelines on Microsoft Hosted Agents

Firstly, we will fork a repository from GitHub. For this demo, we will use a Python Django
WebApp sample from https://github.com/Azure-Samples/msdocs-python-django-webapp-
quickstart/tree/main:

Figure 6 - GitHub repository

Then a WebApp was created, and deployment centre configured to link to GitHub:

COM769
Scalable Advanced Software Solutions 6
Figure 7 - WebApp creation

Figure 8 - Deployment Centre config with GitHub account

Workflow YAML code has been pushed to the GitHub repository:

Figure 9 - YAML Code shown in GitHub

COM769
Scalable Advanced Software Solutions 7
Creating a Pipeline in Azure and reviewing the YAML code before committing to the main
branch.For future changes we can create a new branch and test on the new branch before
committing to the main branch if all tests passes.

Figure 10 - YAML config updates

Pipeline was ran and completed.

Figure 11 - Pipeline Jobs overview

A web App was deployed:

Figure 12 - WebApp Deployment

COM769
Scalable Advanced Software Solutions 8
And shown working:

Figure 13 - WebApp test

YAML file was set up to deploy code once tests are complete and passed.

Figure 14 - YAML Jobs update

COM769
Scalable Advanced Software Solutions 9
V - Quantification of Solution Performance
The CICD Pipeline aimed at running three tests on different Python versions and deploying
the webapp upon completion. The three tests were performed several times whilst trying to
debug a deployment issue and their timings varied from 15s to 30s each, totalling 45-90
seconds to run the whole test script and the deployment varied from 6 to 15 seconds, thus a
total range of 51 to 105 seconds to test the web app on three different python versions and
deploy it to Microsoft Azure.

VI – Conclusion
A CI/CD pipeline and DevOps culture streamline software development by automating testing,
integration, and deployment processes. This methodology enhances collaboration between
development and operations teams, fostering faster and more reliable software delivery.
Continuous Integration ensures code quality, while Continuous Deployment automates
releases, reducing manual errors. DevOps principles promote communication, collaboration,
and automation, resulting in increased efficiency, shorter development cycles, and quicker
response to customer and user feedback. Ultimately, adopting CI/CD and a DevOps culture
accelerates software delivery, improves product quality, and enhances overall team
productivity, making it a worthwhile and transformative approach in modern software
development.

COM769
Scalable Advanced Software Solutions 10
COM769
Scalable Advanced Software Solutions 11
References

[1] “GitLab,” [Online]. Available: https://about.gitlab.com/topics/ci-cd/. [Accessed 03 11 2023].

[2] “RedHat,” [Online]. Available: https://www.redhat.com/en/topics/devops/what-cicd-pipeline. [Accessed 03 11


2023].

[3] https://business.adobe.com/, “Adobe,” Adobe, 2023. [Online]. Available:


https://business.adobe.com/blog/basics/waterfall#what-is-the-waterfall-methodology. [Accessed 03 11 2023].

[4] “Wikipedia,” [Online]. Available:


https://en.wikipedia.org/wiki/Kanban_board#/media/File:Abstract_Kanban_Board.svg. [Accessed 03 11 2023].

[5] “TechTarget,” [Online]. Available: https://www.techtarget.com/searchsoftwarequality/definition/unit-


testing#:~:text=Unit%20testing%20is%20a%20software,tests%20during%20the%20development%20process..
[Accessed 03 11 2023].

[6] “TutorialsPoint,” [Online]. Available: https://www.tutorialspoint.com/software_testing_dictionary/unit_testing.htm.


[Accessed 03 11 2023].

[7] “Visual paradigm,” [Online]. Available: https://www.visual-paradigm.com/scrum/why-fixed-length-of-sprints-in-


scrum/. [Accessed 03 11 2023].

COM769
Scalable Advanced Software Solutions 12

You might also like