{"id":193566,"date":"2025-03-12T06:30:00","date_gmt":"2025-03-12T05:30:00","guid":{"rendered":"https:\/\/liora.io\/en\/?p=193566"},"modified":"2026-08-08T14:35:59","modified_gmt":"2026-08-08T13:35:59","slug":"all-about-circleci","status":"publish","type":"post","link":"https:\/\/liora.io\/en\/all-about-circleci","title":{"rendered":"What is CircleCI?"},"content":{"rendered":"\n<p><strong>CircleCI is a platform for continuous integration and continuous deployment (CI\/CD). Established in 2011 and valued at $1.7 billion in 2021, it stands as one of the most favored CI\/CD platforms globally.<\/strong><\/p>\n\n\n<p>CircleCI empowers developers to build, test, and deploy their code swiftly and reliably. Today, the company supports thousands of organizations around the world, from startups to major corporations, providing the flexibility and power needed for any project type.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"but-what-exactly-is-ci-cd\">But what exactly is CI\/CD?<\/h2>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for But what exactly is CI\/CD?\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image3-1.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image3-1.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image3-1-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image3-1-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<p><a href=\"https:\/\/liora.io\/en\/all-about-ci-cd\">CI\/CD<\/a>, or &#8220;<strong>Continuous Integration \/ Continuous Delivery<\/strong>&#8220;, is a development methodology focusing on automating the steps within an application&#8217;s lifecycle. It aims to decrease human errors, speed up delivery times, and enhance application quality.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\"><strong>Continuous Integration (CI)<\/strong> involves regularly incorporating code written by various team members into a central repository. Each modification is automatically tested to ensure it doesn&#8217;t introduce bugs or compatibility issues.<\/li>\n<li><strong>Continuous Deployment (CD)<\/strong> automates the delivery of validated code without requiring manual intervention.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"key-features\">Key Features<\/h2>\n\n\n<p>CircleCI offers a comprehensive suite of tools and integrations aimed at automating, optimizing, and securing the development process while ensuring efficient continuous delivery.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Key Features\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image12.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image12.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image12-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image12-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"flexible-workflows\">Flexible Workflows<\/h3>\n\n\n<p>Facilitates orchestration of complex pipelines with conditional dependencies, optimizing tests and deployments to save time.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Flexible Workflows\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image5-1.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image5-1.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image5-1-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image5-1-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"cloud-execution\">Cloud Execution<\/h3>\n\n\n<p>Delivers scalable cloud environments using <a href=\"https:\/\/liora.io\/en\/virtual-machine-definition-use-and-benefits\">virtual machines<\/a> or <a href=\"https:\/\/liora.io\/en\/docker-definition-and-tutorial\">Docker<\/a>.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Cloud Execution\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image15.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image15.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image15-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image15-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"build-parallelization\">Build Parallelization<\/h3>\n\n\n<p>Distributes tasks to hasten tests and builds, reducing processing time.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Build Parallelization\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image14.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image14.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image14-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image14-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"multi-environment-support\">Multi-environment Support<\/h3>\n\n\n<p>Supports a <a href=\"https:\/\/liora.io\/en\/top-10-programming-languages\">variety of languages<\/a>, <a href=\"https:\/\/liora.io\/en\/framework-what-is-it\">frameworks<\/a>, and environments.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Multi-environment Support\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image11.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image11.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image11-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image11-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"deployment-automation\">Deployment Automation<\/h3>\n\n\n<p>Integrates with tools like <a href=\"https:\/\/liora.io\/en\/why-kubernetes-has-become-an-indispensable-tool-in-data-science\">Kubernetes<\/a> and <a href=\"https:\/\/liora.io\/en\/terraform-using-gcp-to-deploy-your-infrastructure\">Terraform<\/a>.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Deployment Automation\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image4-1.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image4-1.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image4-1-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image4-1-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"intelligent-caching\">Intelligent Caching<\/h3>\n\n\n<p>Caches dependencies to avoid re-downloading them.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Intelligent Caching\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image7-1.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image7-1.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image7-1-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image7-1-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"security-and-compliance\">Security and Compliance<\/h3>\n\n\n<p>Features include data encryption, granular permissions, and pipeline audits.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Security and Compliance\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image9.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image9.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image9-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image9-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"continuous-testing-and-reporting\">Continuous Testing and Reporting<\/h3>\n\n\n<p>Integrates with testing tools to generate detailed reports.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Continuous Testing and Reporting\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image6-1.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image6-1.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image6-1-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image6-1-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"monitoring-and-insights\">Monitoring and Insights<\/h3>\n\n\n<p>Analytical dashboards for monitoring pipeline performance.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for Monitoring and Insights\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image8.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image8.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image8-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image8-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"git-integration\">Git Integration<\/h3>\n\n\n<p>Works seamlessly with <a href=\"https:\/\/liora.io\/en\/github-what-is-it\">GitHub<\/a>, <a href=\"https:\/\/liora.io\/en\/gitlab-your-ultimate-guide-to-the-devops-centric-git-repository\">GitLab<\/a>, and Bitbucket to automate CI\/CD workflows.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"setting-up-circleci\">Setting Up CircleCI<\/h2>\n\n\n<p>The initial setup is straightforward and quick, supporting integration with GitHub, GitLab, or Bitbucket.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"1-before-installation\">1. Before Installation<\/h3>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\">Initially, ensure you have an account on a compatible code management platform (<strong>GitHub, GitLab, or Bitbucket<\/strong>) and a CircleCI account linked to the repository in use.<\/li>\n<li aria-level=\"1\">A configuration file config.yml must be in a .circleci directory at the repository root.<\/li>\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\" id=\"2-project-registration\">2. Project Registration<\/h3>\n\n\n<p>On the CircleCI website, grant the necessary permissions for it to access your repositories. To add a new project, click on &#8220;Set up project&#8221; as shown in the screenshot below:<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:440px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for 2. Project Registration\" decoding=\"async\" height=\"128\" loading=\"lazy\" sizes=\"(max-width: 1277px) 100vw, 1277px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image16.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image16.webp 1277w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image16-300x30.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image16-1024x103.webp 1024w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image16-768x77.webp 768w\" style=\"width:440px;max-width:100%;height:auto\" width=\"1277\"\/><\/figure>\n\n\n<p>Select an integration method; in this example, &#8220;Fast&#8221; is chosen.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:438px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for 2. Project Registration\" decoding=\"async\" height=\"336\" loading=\"lazy\" sizes=\"(max-width: 438px) 100vw, 438px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image10.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image10.webp 438w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image10-300x230.webp 300w\" style=\"width:438px;max-width:100%;height:auto\" width=\"438\"\/><\/figure>\n\n\n<p>A configuration file is generated automatically.<\/p>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/en\/courses\/cloud-dev\/cloud-engineer\">Learn how to run a CircleCI project<\/a><\/div><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"3-the-configuration-file\">3. The Configuration File<\/h3>\n\n\n<p>In our example, the resulting configuration file is:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>version: 2.1\norbs:\n \u00a0python: circleci\/python@2.1.1\njobs:\n \u00a0build-and-test:\n \u00a0\u00a0\u00a0docker:\n \u00a0\u00a0\u00a0\u00a0\u00a0- image: cimg\/python:3.12\n \u00a0\u00a0\u00a0steps:\n \u00a0\u00a0\u00a0\u00a0\u00a0- checkout\n \u00a0\u00a0\u00a0\u00a0\u00a0- python\/install-packages:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0pkg-manager: pip\n \u00a0\u00a0\u00a0\u00a0\u00a0- run:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name: Run tests\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0command: pytest\nworkflows:\n \u00a0sample:\u00a0\n \u00a0\u00a0\u00a0jobs:\n \u00a0\u00a0\u00a0\u00a0\u00a0- build-and-test<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\">The first line indicates the schema version used by CircleCI.<\/li>\n<li aria-level=\"1\"><strong>Orbs<\/strong> are reusable packages containing preconfigured CircleCI configurations for rapid integration of specific tools or languages without rewriting the setup.<\/li>\n<li aria-level=\"1\"><strong>Jobs<\/strong> are work units comprising sequential steps, referred to as <strong>steps<\/strong>, executed in a defined environment. In this context, the <strong>build-and-test<\/strong> task includes a <strong>docker<\/strong> element defining the execution environment (a Docker image provided by CircleCI), along with the <strong>steps<\/strong> described below.<\/li>\n<li aria-level=\"1\">Steps (<strong>steps<\/strong>) outline actions performed within a job:\n<ul>\n<li aria-level=\"1\"><strong>checkout<\/strong>: Retrieves the source code from the repository, making it accessible within the CircleCI environment.<\/li>\n<li aria-level=\"2\"><strong>python\/install-packages<\/strong>: Installs necessary dependencies through the <strong>pip<\/strong> package manager.<\/li>\n<li aria-level=\"2\"><strong>run<\/strong>: Executes a job command. Here, <strong>Pytest<\/strong> is utilized to perform unit tests.<\/li>\n<\/ul>\n<\/li>\n<li aria-level=\"1\">Lastly, <strong>workflows<\/strong> are collections of jobs executed in a predetermined sequence:\n<ul>\n<li aria-level=\"2\"><strong>sample<\/strong>: Name of the workflow<\/li>\n<li aria-level=\"2\"><strong>jobs<\/strong>: List of jobs to execute in the workflow<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<p>Potential modifications could include:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\">To avoid reinstalling packages with every run (thus saving build time), implement cache management:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>- restore_cache:\n \u00a0\u00a0\u00a0keys:\n \u00a0\u00a0\u00a0\u00a0\u00a0- v1-dependencies-{{ checksum \"requirements.txt\" }}\n- python\/install-packages:\n \u00a0\u00a0\u00a0pkg-manager: pip\n- save_cache:\n \u00a0\u00a0\u00a0key: v1-dependencies-{{ checksum \"requirements.txt\" }}\n \u00a0\u00a0\u00a0paths:\n \u00a0\u00a0\u00a0\u00a0\u00a0- ~\/.cache\/pip<\/code><\/pre>\n\n\n\n<p>This enables CircleCI to attempt restoring an existing cache based on the <strong>requirements.txt<\/strong> file hash. If found, they&#8217;ll be retrieved; if not, they&#8217;ll be installed via <strong>pip<\/strong>.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\">Upon moving the application to production, automated deployments can be added following successful tests:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>workflows:\n \u00a0version: 2\n \u00a0deploy:\n \u00a0\u00a0\u00a0jobs:\n \u00a0\u00a0\u00a0\u00a0\u00a0- build-and-test\n \u00a0\u00a0\u00a0\u00a0\u00a0- deploy:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0requires:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0- build-and-test\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0filters:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0branches:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0only: main<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"4-cloud-integration\">4. Cloud Integration<\/h3>\n\n\n<p>CircleCI facilitates seamless integration with cloud infrastructures, including Azure, AWS, or GCP. In this instance, we perform an AWS integration.<\/p>\n\n\n<p>To simplify the process, add an <strong>orb<\/strong> as follows:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>aws-cli: circleci\/aws-cli@4.1.1<\/code><\/pre>\n\n\n<p>Also, incorporate a <strong>job<\/strong> resembling the example below:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>deploy-to-aws:\n \u00a0\u00a0\u00a0docker:\n \u00a0\u00a0\u00a0\u00a0\u00a0- image: cimg\/python:3.12\n \u00a0\u00a0\u00a0steps:\n \u00a0\u00a0\u00a0\u00a0\u00a0- attach_workspace:\u00a0\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0at: \/home\/circleci\/project\n \u00a0\u00a0\u00a0\u00a0\u00a0- aws-cli\/setup\n \u00a0\u00a0\u00a0\u00a0\u00a0- run:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name: Configure AWS credentials\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0command: |\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0aws configure set default.region $AWS_DEFAULT_REGION\n \u00a0\u00a0\u00a0\u00a0\u00a0- run:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name: Deploy application to S3\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0command: |\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0aws s3 cp \/home\/circleci\/project\/ s3:\/\/$AWS_S3_BUCKET_NAME --recursive\n \u00a0\u00a0\u00a0\u00a0\u00a0- run:\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name: Clear AWS credentials (for security)\n \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0command: rm -f ~\/.aws\/credentials<\/code><\/pre>\n\n\n<p>The environment variables (identifiable by the <strong>$<\/strong> symbol) should be pre-created in CircleCI settings.<\/p>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/en\/courses\/cloud-dev\/cloud-engineer\">Mastering cloud integration on CircleCI<\/a><\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"ci-cd-best-practices\">CI\/CD Best Practices<\/h2>\n\n\n<p>CircleCI suggests several optimal practices for enhancing CI\/CD pipelines.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for CI\/CD Best Practices\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image1-1.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image1-1.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image1-1-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image1-1-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration for CI\/CD Best Practices\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image13.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image13.webp 512w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image13-300x300.webp 300w, https:\/\/liora.io\/app\/uploads\/sites\/9\/2025\/02\/image13-150x150.webp 150w\" style=\"width:512px;max-width:100%;height:auto\" width=\"512\"\/><\/figure>\n\n\n<p>The CI\/CD process is deemed essential for every development team.<\/p>\n\n\n<p>Relying on manual processes impedes development speed.<\/p>\n\n\n<p>Reuse configurations and devise caching strategies.<\/p>\n\n\n<p>Avoid duplicating configurations and redundantly downloading dependencies for every build.<\/p>\n\n\n<p>Leverage CircleCI orbs to automate repetitive tasks.<\/p>\n\n\n<p>Refrain from manually scripting redundant configurations for every project.<\/p>\n\n\n<p>Secure pipelines with private environment variables, varied contexts, and administrative oversight.<\/p>\n\n\n<p>Avoid storing sensitive data in project configuration files.<\/p>\n\n\n<p>Ensure comprehensive test coverage by integrating partners like Codecov, Cypress, or SonarCloud.<\/p>\n\n\n<p>Never deploy code without testing or confirming test coverage.<\/p>\n\n\n<p>Utilize automatic Slack notifications to monitor pipeline status and swiftly address failures.<\/p>\n\n\n<p>Avoid overlooking notifications, as they could lead to delays in issue detection.<\/p>\n\n\n<p>Incorporate popular orbs like Node, AWS-CLI, and Python to streamline configurations and cloud deployment.<\/p>\n\n\n<p>Avoid manually configuring each tool, which may result in errors and inconsistencies.<\/p>\n\n\n<p>Examine pipeline metrics to pinpoint bottlenecks and enhance workflow efficiency.<\/p>\n\n\n<p>Neglecting pipeline performance monitoring can hinder deployment speed.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n<p>CircleCI is a <strong>powerful and adaptable<\/strong> solution that enables the automation and optimization of CI\/CD practices.<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>CircleCI is a platform for continuous integration and continuous deployment (CI\/CD). Established in 2011 and valued at $1.7 billion in 2021, it stands as one of the most favored CI\/CD platforms globally. CircleCI empowers developers to build, test, and deploy their code swiftly and reliably. Today, the company supports thousands of organizations around the world, [&hellip;]<\/p>\n","protected":false},"author":74,"featured_media":193568,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2434],"class_list":["post-193566","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts\/193566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/users\/74"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/comments?post=193566"}],"version-history":[{"count":5,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts\/193566\/revisions"}],"predecessor-version":[{"id":210652,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/posts\/193566\/revisions\/210652"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/media\/193568"}],"wp:attachment":[{"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/media?parent=193566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/en\/wp-json\/wp\/v2\/categories?post=193566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}