What is Build, Build Automation and Continuous Integration?
This tutorial we are going to learn about Build, Build Automation and Continuous Integration.
Build:
The build is a process of compiling the source code into binaries and package the software into JAR, WAR, EAR and whatever require the format for deployment or installation.
Build tools are usually transforming source code into binaries, which we can run on the command line or inside IDE.
Build Automation:
Build automation is automating the build process instead of manual process or deployment.
Deployment automation is making the build file and deploying to corresponding environments like Test, Non-Prod/UAT, or Production system.
Build Automation will do below steps.
-
Connect to source control server (Subversion, RTC, Github, and CVS)
-
Download the latest version into Master/Trunk/Mainline
-
Compile the application
-
Execute the code analysis (PMD, Checkstyle and FindBugs)
-
Package the application binaries (JAR, WAR, EAR)
-
Deploy the application to remote web or application server
-
Restart the server
-
Send an email with the summary of deployment.
Continuous Build:
Once code check-in to source code repository, automated build for every check-in.
Continuous Integration (CI):
Continuous Integration is a software development practice where developers commit code to a source code repository more frequently (check-in and checkout).
Build automation is the process of automating the application deployment, unit test and release using CI. CI process will be automated using a build tool with a continuous integration server.
Build Tools like Maven and Gradle.
Continuous Integration Servers like Jenkins, Hudson and CruiseControl.
Continuous Deployment (CD):
Automated deployment when deployment passed using CI into the lower environment like test/QA system also passed manual/functional testing and code changes will be promoted to the higher environment like UAT or Production.
Continuous Deployment will provide the notification to new/existing users, application/product release notes, new features, notifying to support, new version changes and other details.
Continuous Delivery:
Continuous Delivery is a software development practice where the release process is completely automated. All the code changes are automatically built, tested/verified, and deployed to a production environment.