Software Delivery
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 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.
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:
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.
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.
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.
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.
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