{"id":4112,"date":"2019-02-28T17:40:13","date_gmt":"2019-02-28T10:40:13","guid":{"rendered":"http:\/\/54.151.235.32\/?p=4112"},"modified":"2021-03-03T18:00:27","modified_gmt":"2021-03-03T11:00:27","slug":"continuous-integration-development-with-circleci","status":"publish","type":"post","link":"https:\/\/renovacloud.com\/en\/continuous-integration-development-with-circleci\/","title":{"rendered":"Continuous Integration Development with CircleCI"},"content":{"rendered":"<p><b>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.<\/b><b><br \/>\n<\/b><b>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.<\/b><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">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.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Continuous delivery implies that every change made to the code will be\u200a\u2014\u200aafter tests have succeeded\u200a\u2014\u200aimmediately deployable. Taken one step further, continuous deployment ensures that every change is immediately deployed.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">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 \u2014 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<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">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\u2014and throughout the development process.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><b>Features :<\/b><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">CircleCI is a cloud-based system \u2014 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.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">It has a free plan even for a business account<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">Rest API \u2014 you have an access to projects, build and artifacts<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">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)<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">CircleCI caches requirements installation. It checks 3rd party dependencies instead of constant installations of the environments needed<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">You can trigger SSH mode to access container and make your own investigation (in case of any problems appear)<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">That\u2019s a complete out of a box solution that needs minimal configuration adjustments<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">CircleCI is compatible with:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">Python, Node.js, Ruby, Java, Go, etc<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">Ubuntu (12.04, 14.04), Mac OS X (paid accounts)<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">Github, Bitbucket<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">AWS, Azure, Heroku, Docker, dedicated server<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">Jira, HipChat, Slack<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">Fast start<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">CircleCI has a free plan for enterprise projects<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">It\u2019s easy and fast to start<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">Lightweight, easily readable YAML config<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <span style=\"font-weight: 400;\">You do not need any dedicated server to run CircleCI<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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\u2019ll be running our integration and deployment processes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">GitHub is one of the most popular git repositories with remote storage. It\u2019s 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.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">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.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Some developers prefer Bitbucket\u2019s repositories because its private repositories are free. GitHub provides private repositories but charges for them (prices start from $7 per month). Whether you&#8217;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.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&#8230;]\n","protected":false},"author":7,"featured_media":4109,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-4112","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-and-analytics"],"_links":{"self":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts\/4112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/comments?post=4112"}],"version-history":[{"count":0,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/posts\/4112\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/media\/4109"}],"wp:attachment":[{"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/media?parent=4112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/categories?post=4112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/renovacloud.com\/en\/wp-json\/wp\/v2\/tags?post=4112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}