Gitlab hero border pattern left svg Gitlab hero border pattern right svg Background wave
GitLab
vs
GitHub
Decision Kit
Decision Kit
Continuous Integration Comparison

On This Page

GitLab CI Capabilities Missing in GitHub

GitLab Capability Features
Built-in CI No plug-ins or third party components.
Simplify DevOps process for new team members AutoDevOps recognizes the code and automatically sets up the end to end devops template
Model and manage large, complex projects and teams Subgroups within Groups to manage large projects, Group File Templates (templates at the group level to drive standardization), Group drop-down in navigation to easily find groups,
Preview App before Merge to reduce defects, shorten development time Preview changes with review apps. Environments Autostop for review apps
Merge when pipeline succeeds Set a Merge Request to be merged automatically when the jobs pipeline succeeds with a single click. Read More Here

GitHub Actions Gaps

Source: GitHub Actions Community Forum The following table lists key gaps in GitHub Actions and its associated impact. This information is derived from user feedback in GitHub Actions Community Group and was assimilated on April 10, 2020.

Description Impact Reference
Continuous Integration    
Issues That Increase Build Time    
Limitations in Action to automatically merge pull request Actions can’t be triggered by other workflows. For this reason, pull request that are merged by this action will not trigger other GitHub workflows. This Action has not been verified by GitLab. Please feel free to email us your feedback at devopstools@gitlab.com. Auto Merge Action Link
GitHub Actions does not support [skip ci] Trivial changes can trigger long build times because the CI step is automatically kicked off. GitHub Community Discussion
Cannot Auto-Cancel Redundant Builds When a newer build is triggered on the same branch does not cancel running builds and start on the new one. Increased build times and compute resources GitHub Community Discussion
Unable to cache artifacts within repo for reuse in subsequent builds Slower build times because a docker image needs to be rebuilt each time or fetched from hub, instead of using cached version in repo. GitHub Community Discussion
Caching files between GitHub Actions executions is limited to 200 MB Projects and builds take longer to run. GitHub Community Discussion
Continue on Error does not notify in UI Allowable errors are not flagged in UI, have to review logs. GitHub Community Discussion
Cannot retry a build that failed Increases idle times between re-tries due to need for manual monitoring and manual trigger of retry. GitHub Community Discussion
Github Actions cannot pull from private docker repositories (AWS ECR, Docker Hub, GC Container Registry) Increases build times. GitHub Community Discussion
GitHub Actions Build Caching - Docker Layers Builds take longer because container image is built from scratch. GitHub Community Discussion
Issues That Increase Operational Costs    
Cannot specify dependency running in another workflow Cannot reuse code, code duplication and several if conditions are necessary, which complicates workflow definition. GitHub Community Discussion
Actions cannot be accessed across other private repositories even when repos are within the same organization. Hard to reuse code. Need hard to implement workarounds to overcome this limitation GitHub Community Discussion
Cannot delete individual workflow runs from UI Persistence of failed workflow runs adds to clutter and reduces manageability. GitHub Community Discussion
Continuous Delivery    
Issues That Increase Delivery Time    
Unable to re-run just a single job in a workflow For example, cannot re-run just some of the failed tests. Users have to rerun the entire workflow, resulting in wasted time/loss of productivity. In a workflow with 10 jobs, you have to re-run all 10. GitHub Community Discussion
Issues That Increase Operational Costs    
Cannot easily trigger different workflows for staging and production environment Conditional workflows are hard to implement and maintain because GitHub Actions Events do not have types associated with it. Have to implement series of if conditions in the workflow. GitHub Community Discussion
Cannot trigger a new workflow from another workflow using the repository’s GITHUB_TOKEN. Options are to 1) create a bot user and use a personal access token or 2) create a github app. Cannot easily kick off tests after a code push. Must use one of the prescribed workarounds. GitHub Community Discussion
Cannot trigger actions via Pull Request Messages/Comment E.g. User does not want some Actions that take long to run to fire on every pull request. Instead add a comment in the PR to prevent certain actions from running. GitHub Community Discussion
Lack of support for YAML anchors and aliases Prevents code reuse. To overcome this limitation users need to cut and paste code, 5x the workflow size, difficult to maintain. GitHub Community Discussion
Issues That Increase Risk    
Cannot manually trigger a workflow execution. Limits ability to manually trigger to production but allow automated triggers to other environments. GitHub Community Discussion
Enterprise Readiness    
Issues That Increase Risk    
Making secrets availabe to builds of forks Increased security vulnerability due to work arounds such as including token in plain text in workflows. GitHub Community Discussion
GitHub Actions requires credentials for accessing Docker Images from a public repository. Works manually through UI. Need a separate Docker Registry as a workaround. GitHub Packages cannot be accessed through Actions without credentials. GitHub Community Discussion
Issues That Increase Operational Cost    
GitHub Action support in GitHub Enterprise Server GitHub Actions does not work in GitHub Enterprise Server, currently only available in GitHub Enterprise Cloud GitHub Community Discussion
Selectively delete artifacts from UI or store artificats for less than 90 days Increased storage needs leads to higher pricing. Teams can also be blocked because they have reached artifacts limit. Must write special scripts or manage artificats post build to reduce storage. GitHub Community Discussion

GitLab CI Compliance Differentiators

GitLab Capability Features
PCI Compliance GitLab addresses application security, which is a critical element for the enterprise wishing to be PCI-compliant.
HIPPA Identify and manage risks and vulnerabilities, Define and enforce development standards and processes
GDPR Membership locking, rejecting unsigned commits,
user permissions, push rules etc. prevent sensitive files from accidentally being pushed to production.
IEC 62304:2006
ISO 13485:2016
ISO 26262-6:2018
Creating and documenting plans and processes, maintaining end to end traceability etc. help support these compliance needs

GitLab vs GitHub CI Configuration Comparison

GitLab GitHub CI Config Chart

GitLab vs GitHub Packet Registry Comparison

GitLab GitHub CI Config Chart

GitLab vs GitHub CI/CD Security Comparison

GitLab GitHub CI Config Chart

GitLab vs GitHub CI/CD Summary Comparison

GitLab GitHub CI Config Chart

GitLab vs GitHub Container Registry comparison

Features GitHub GitLab
Docker image support

Supports storage and retrieval of Docker style containers
Yes Yes
Container registry webhooks

Trigger actions after a successful push to a registry to integrate Docker Hub with other services.
Yes Yes
Container registry high availability

Highly available through the use of multiple replicas of all containers and metadata such that if a machine fails, the registry continues to operate and can be repaired.
No Yes
Container Registry geographic replication

Supports distributed teams by running multiple registry instances across several regions and syncing between data centers.
No Yes
Supports private container registries

Offers the ability to have private container registries and repositories
Yes Yes
Image Expiration policies

Easily define, manage and update project-level policies to define which images should be removed and preserved. This feature is designed to helpyou reduce storage costs and prevent important images from being deleted.
No Yes
SaaS container registry offering

The container registry ia available as a software service.
Yes No
Self-managed container registry offering

Container registry which is available to be self-installed and self-managed in an organizations data center, co-hosted, or in a chosen cloud provider.
Yes Yes
Use container registry through REST API

Enables support for automation and integration of container registry through a REST API.
No Yes
Lower the cost of storage for the GitLab Container Registry by running garbage collection

In the context of the Docker registry, garbage collection is the process of removing blobs from the filesystem when they are no longer referenced by a manifest.
No Yes
Use search to find a container images

Search your group and project’s Container Registry by image name
Yes Yes
Helm chart repository support

Supports storage and retrieval of Helm charts.
Yes Yes