Deploying an application is traditionally the most challenging part of the software delivery process. No two machines are the same, the guy who usually does the deployments is on vacation, and risk of disrupting production is ever looming. Without proper automation and safety checks, it can be a very daunting process.
In the modern, containerized world of applications, deployments can be more easily automated, with more safety checks, and with far fewer variables than before. Rather than deploying to a multitude of machines, each with their own configurations and dependencies, we can simply deploy our self-contained application as a container, and be confident it will run.
To achieve this, processes known as continuous integration and continuous delivery (often abbreviated as CI and CD, respectively) are frequently used to automate the process of building, testing, and sometimes even deploying applications.
Continuous delivery implies that every change made to the code will be — after tests have succeeded — immediately deployable. Taken one step further, continuous deployment ensures that every change is immediately deployed.
The main goal of continuous integration is to identify the problems that may occur during the development process earlier and more easily. If you integrate regularly — there is much less to check while looking for errors. That results in less time spent for debugging and more time for adding features. There is also an option to set up inspection of the code style, cyclomatic complexity (low complexity makes the testing process more simple) and other checks. That helps to minimize the efforts of the person responsible for the code review, saves time, and improves the quality of the code
CircleCI provides an amazing service that allows you to utilize continuous integration in your development process. Continuous integration is a common practice in development that involves integrating code into a shared repository like GitHub, GitLab, Bitbucket or a self-hosted remote repository several times a day. Shared code is tested by an automated build so teams are able to catch mistakes early on—and throughout the development process.
CircleCI is a cloud-based system — no dedicated server required, and you do not need to administrate it. However, it also offers an on-prem solution that allows you to run it in your private cloud or data center.
It has a free plan even for a business account
Rest API — you have an access to projects, build and artifacts
The result of the build is going to be an artifact or the group of artifacts. Artifacts could be a compiled application or executable files (e.g. android APK) or metadata (e.g. information about the tests`success)
CircleCI caches requirements installation. It checks 3rd party dependencies instead of constant installations of the environments needed
You can trigger SSH mode to access container and make your own investigation (in case of any problems appear)
That’s a complete out of a box solution that needs minimal configuration adjustments
CircleCI is compatible with:
Python, Node.js, Ruby, Java, Go, etc
Ubuntu (12.04, 14.04), Mac OS X (paid accounts)
AWS, Azure, Heroku, Docker, dedicated server
Jira, HipChat, Slack
CircleCI has a free plan for enterprise projects
It’s easy and fast to start
Lightweight, easily readable YAML config
You do not need any dedicated server to run CircleCI
The repository plays a key role in the integration process: it is where the actual work is stored. Every single time a pull request is merged, we’ll be running our integration and deployment processes.
GitHub is one of the most popular git repositories with remote storage. It’s top-ranked among open source projects and is a free and powerful service. Worldwide, some of the best projects store their source code on GitHub like Node.js, Bootstrap, AngularJS, Yii, Composer, Docker, and Ruby on Rails.
GitHub also serves as a change- and audit log. Instability can be tracked down to an individual commit. Rolling back becomes as simple as either using git revert or git reset to the last known working commit, rebuilding, and rolling out a stable release.
Some developers prefer Bitbucket’s repositories because its private repositories are free. GitHub provides private repositories but charges for them (prices start from $7 per month). Whether you’re pushing code to the cloud or on-premise, CircleCI easily integrates with GitHub and GitHub Enterprise. CircleCI automatically runs your build and test processes whenever you commit code, and then displays the build status in your GitHub branch.