Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
delivery process. It enables teams to move faster and focus on delivering features without
worrying about breaking something. It doesn’t matter if your team is working on a mobile app,
firmware, or cloud project, the CI/CD system will greatly improve workflow and quality of
deliverable. With this information, you can go ahead and implement CI/CD system for your
organization.
Questions Answers
What is Continuous Continuous Integration is the process of running a series of steps on
Integration (CI)? your project to make sure that it compiles without error, passes all test
cases, and generates a working package without any issues. Each
change in software generally goes through a CI pipeline.
Sanity check (linting): This should be the first step. It will ensure that
changes in source code conform to predefined coding rules and that
there are no syntactical errors.
Compile: The compilation step sees to it that all libraries and
dependencies are in place and that there are no issues in generating
binaries.
Packaging: This step will create a bundle with all binaries along with
static resources and dependencies so that we can deploy the
application to the server. In case of mobile apps, it can also sign
packages with developer keys to ensure integrity.
Unit test: This step will execute all unit tests on the build. Application
will be ready for deployment pipeline once all tests are passed.
Backup: This is a very crucial step that involves backing up existing
database, configurations, and data files before deploying any build.
Deployment: Once a backup is completed successfully, the application
will be deployed, replacing the existing one on the server. This step can
also take care of any process you might want to set up to ensure zero
downtime deployment.
Smoke test: After the application is deployed, it’s ideal to have a series
of automated sets of basic functionality tests to ensure that system is up
and functional.
Additional things to Protecting data and configuration related files is very important. Having
consider during an effective backup strategy is the key to implementing the CD pipeline
implementation: which keeps maintaining a reliable set of backups.
Here are a few things to consider when implementing the backup stage:
As our objective is to iterate faster, there can be multiple builds daily.
This results in huge storage requirements for backups. However, as
changes between these builds won’t be major, we can save significant
amount of storage by backing up only delta between builds.
Having backup is great. However, a backup you cannot restore is
pointless. It’s essential to have periodic verification of backups, which
again can be made a part of a backup pipeline.
Tools Sanity tools: cppcheck for C/C++, checkstyle for Java, and JSLint for
JavaScript, SonarQube, Gradle for Android project, Maven for
Java-based project, npm, and pip for NodeJS/Python projects
Deployment tools: Jenkins offers plugins to deploy code via SSH, FTP,
etc. AWS also offers a service called AWS CodeDeploy which allows
you to deploy builds on Amazon EC2 instances. AWS offers AWS
CodePipeline this is one integrated tool for CI/CD need.