What is GitHub Actions?
GitHub Actions is a continuous integration/continuous delivery (CI/CD) platform that lets you automate build, test, and deployment pipelines. It can also execute arbitrary code in the specified repository when an event occurs, and package code in Docker containers running on GitHub servers. It is compatible with any programming language and can run both on local servers and public clouds.
What is CircleCI?
CircleCI is a continuous integration tool. You can use it to build, test and deploy software projects automatically. Automation is managed within CircleCI pipelines, which are made up of jobs.
In CircleCI, a job is a specific set of tasks in the build, test, or deploy phases of a software pipeline. Each job runs in a separate container or virtual machine (VM).
CircleCI can send email, Slack, or IRC notifications when a pipeline stage is complete.
CircleCI vs. GitHub Actions: Key Differences
1. Repository Compatibility
CircleCI and GitHub Actions offer three main delivery options—self-hosting on-premises, Software as a Service (SaaS), or a hybrid option. Choosing the SaaS option means the repository must have continuous access to the platform so it can retrieve the application’s source code. CircleCI works with private or public repositories stored on Bitbucket or GitHub. However, GitHub Actions works with repositories stored on GitHub only.
CircleCI can run a push to a branch before a pull request is created, which means a new job is not triggered once a pull request is opened. Developers relying on the CIRCLE_PULL_REQUEST env var for certain scripts might run into issues. You can enable “Build Pull Requests Only” in the project’s advanced settings. However, this option works only for the project as a whole.
2. UI
GitHub provides a user-friendly UI and tighter integration with the code repositories stored on GitHub. When your repository is not connected to GitHub, CircleCI offers some useful UI features. Teams looking to keep their code repositories and application pipelines in the same place typically opt for GitHub Actions.
3. Pricing
CircleCI is always free for open source projects, and other pricing options are based on credits. Paid plans start at $15 per month but do not offer unlimited builds. Teams with many projects running builds continuously without an accurate estimate might see their costs skyrocketing.
CircleCI offers a free plan for private storage with limited weekly credits. When using the default medium-size Docker build container, you can get around 250 minutes per week in build time. A project that does not need to run builds continuously can leverage the free plan—it is a good option for projects using only a few weekly builds.
GitHub Actions offers similar pricing, including a free tier you can use indefinitely, provided you do not exceed the free tier threshold. The free tier includes up to 2,000 minutes of Actions per month. You can pay for the time you run a CI/CD pipeline per billing cycle.
4. Configuration
CircleCI pipelines exist as one YAML configuration file, while GitHub Actions lets you split pipelines into separate YAML files for each workflow. An important limitation of CircleCI is that it can only use one Docker image per job.
You can use GitHub Actions to create multiple YAML files and partition them based on the testing and staging environment. This GitHub Actions feature enables you to create cleaner designs for applications using different build processes in production and development environments. GitHub Actions lets you use multiple Docker images per job if necessary.
5. Orbs vs. Actions
GitHub Actions and CircleCI provide reusable, simplified commands that ensure pipelines can extract predefined, common processes. This feature is called actions in GitHub Actions and orbs in CircleCI. Actions and orbs help minimize process complexity and save time for development teams.
Orbs are commands that work with commonly-used services by cloud providers like AWS, Google Cloud, and Azure. For example, you can use a CircleCI orb to call a command such as aws-ecr/build-and-push-image
This orb tells CircleCI to build a Docker image and push it automatically to the desired ECR repository. You can also create private orbs for sensitive internal processes. GitHub Actions are also supported by most cloud providers but do not allow publishing an Action privately.
CircleCI provides various parameters to create an operation, and the orb is responsible for handling the rest, while GitHub Actions requires more input, including Docker commands. CircleCI offers a simpler design than GitHub.
However, GitHub Actions provides more granular control, exposing many commands that CircleCI abstracts. In addition, GitHub Actions has a marketplace with a large selection of actions, while CircleCI offers a smaller selection.
Related content: Read our guides to: GitHub actions tutorial
GitHub Actions Pros and Cons
Advantages of GitHub Actions:
- Ease of use—GitHub Actions is friendly for beginners. It only requires a simple YAML file to get started. Developers with some knowledge of YAML, even if they don’t have significant CI/CD experience, can derive value from it.
- Runners—Github Actions provides free runners you can use to perform CI/CD tasks. These runners are owned and maintained by Github, but you can also add your own hosted runners, which enables a hybrid delivery model (on-premise combined with SaaS).
Disadvantages of GitHub Actions:
- Vendor lock in—with GitHub Actions, you are tied to Github as a source control system.
- Maturity—other tools in the industry are more mature than GitHub Actions.
- Enterprise features—GitHub Actions lacks capabilities required by large organizations, such as analytics, insights, manual approvals etc..
CircleCI Pros and Cons
Advantages of CircleCI:
- Easy setup—the tool is easy to set up and eliminates duplicate work. It also enables maintenance of the CI pipeline without complexity.
- Plugins—CircleCI provides built-in plugins that let you run tasks on Linux, MacOS, and containers. This reduces the operational overhead of maintaining and installing plugins.
- Security—all variables are encrypted and later shared with the build container using SSH.
Cons of CircleCI:
- Limited repository support—currently only supports GitHub or BitBucket repositories
- Advanced customizations—built-in plugins do not support some advanced CI flow customizations.
- Limited builds—requires purchasing extra credits beyond a certain number of builds.
- One Docker image per job—this is a hard limitation in CircleCI which does not exist in GitHub Actions.
Combine GitHub Actions or CircleCI with Codefresh to Support GitOps and Kubernetes Deployments
GitHub Actions and CircleCI are powerful platforms, but are mainly focused on CI and do not support GitOps and native Kubernetes deployments. Codefresh is created specifically for GitOps and Cloud native applications and can easily handle the CI part of the CD part (or even both parts) of the software lifecycle.
This means that you can get the best of both worlds by keeping all your CI workflows in GitHub Actions or CircleCI, while using Codefresh for advanced features such as:
- Application dashboards
- Git source managements
- Configuration drift management
- Kubernetes environment dashboards
- Topology views
In case you are new to Codefresh—we have made it our mission since 2014 to help teams accelerate their pace of innovation. Codefresh recently released a completely rebuilt GitOps CI/CD toolset. Powered by Argo, Codefresh now combines the best of open source with an enterprise-grade runtime allowing you to fully tap the power of Argo Workflows, Events, CD, and Rollouts. It provides teams with a unified GitOps experience to build, test, deploy, and scale their applications.
The World’s Most Modern CI/CD Platform
A next generation CI/CD platform designed for cloud-native applications, offering dynamic builds, progressive delivery, and much more.
Check It Out