Software Delivery

Roy Godsend
4 min readMay 2, 2021

This article was written to help you with basic knowledge of Software Deployment, CI/CD, Software Quality Assurance and as an individual review assignment of PPL CSUI 2021

the image is taken from memegenerator

The output of software development is to produce software that can be delivered for use by users. The need for software that is built to run on any platform is the foundation of software development. This is where software deployment comes in charge.

Software Delivery is all of the activity that makes software products available to use to market. These activities include Deployment, Continuous Integration/Deployment, and Software Quality Assurance. We’ll learn how to do this using Gitlab. Let’s explore them one by one!

Continuous Integration(CI) is an automation process for the development team. Because the app needs to develop in many platforms and tools, the new code changes need to be regularly built, tested and merged into a shared repository. It establishes an automated and consistent way to build, and test applications.

Continuous Delivery/Deployment (CD) takes part after the CI ends. CD makes automation to releases the deliverable application to the production environment. It takes the main part in software deployment.

The image is taken from Redhat

Now, you have understood about CI/CD and how it takes parts in software delivery. But, there is an issue with this concept. How can your software run with the different operating systems or environments? If your software is deployed in a Linux environment but you want to run your software on your local windows computer? There will be dependencies issues because tools used in the Linux environment may not be available for the Windows environment.

To help you with this issue, there is a tool called Docker. Docker helps you to wrap all the code of your software with the dependencies into an environment so that the software runnable in any environment without limitation in the operating system. Docker makes sure all the dependencies that are needed are ready.

CI/CD in my project!

In developing our project, we implement CI/CD using a service provided by Gitlab via a file named gitlab.ci.yml. In this file, we setting all the needs on the CI/CD process for the project we are working on.

Here, I will show you how to configure your gitlab.ci.yml in a react project.

We need to diver the CI/CD into 4 stages:

Gitlab CI/CD Stages

test — stage

In this stage, we run unit and functional tests to all features implemented in the branch. This stage would be run on every change committed to the branch. The reason why this stage is needed because we want to make sure all the changes made pass the test and all features work well.

test-stage script implementation

lint — stage

At this stage, we check the implemented code whether it meets clean code. The output of the stage are notes about which code has code smell i.e wrong code formating, unused import, ungrouped import, etc.

clean code output using a linter
lint-stage script implementation

sonar — stage

At this stage, we implement Sonarqube to do testing for the entire project. Sonarqube is a tool to give you information about how good is your code implementation. This tool will help you to know bugs that could happen in your code, code coverages, line duplication, vulnerabilities, security hotspots, etc.

sonarqube output
sonar-stage script implementation

deploy — stage

In the last stage, we want the software that has been passed all the three-stage before to be deployed to the website (production or staging). In this stage, the software will be pushed to the remote branch and the CD(Continuous Deployment) process will take place. In our project, we want to implement the software into a test application and a final application.

deploy-stage script implementation

End Words

Thank you for your enthusiasm to learn Software Delivery. I hope this article can help you with your project and assignment.

See you next time!

References

Buku Panduan Git Flow PPL 2021

Buku Panduan Deployment PPL 2021

Buku Panduan Pemrograman PPL 2021

Gitlab Documentation

--

--