On This Page
- GitLab CI Capabilities Missing in GitHub
- GitHub Actions Gaps
- GitLab CI Compliance Differentiators
- GitLab vs GitHub CI Configuration Comparison
- GitLab vs GitHub Packet Registry Comparison
- GitLab vs GitHub CI/CD Security Comparison
- GitLab vs GitHub CI/CD Summary Comparison
- GitLab vs GitHub Container Registry comparison
GitLab CI Capabilities Missing in GitHub
|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.
|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 firstname.lastname@example.org.||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|
|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|
|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
|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.
|Creating and documenting plans and processes, maintaining end to end traceability etc. help support these compliance needs|
GitLab vs GitHub CI Configuration Comparison
GitLab vs GitHub Packet Registry Comparison
GitLab vs GitHub CI/CD Security Comparison
GitLab vs GitHub CI/CD Summary Comparison
GitLab vs GitHub Container Registry comparison
|Docker image support
Supports storage and retrieval of Docker style containers
|Container registry webhooks
Trigger actions after a successful push to a registry to integrate Docker Hub with other services.
|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.
|Container Registry geographic replication
Supports distributed teams by running multiple registry instances across several regions and syncing between data centers.
|Supports private container registries
Offers the ability to have private container registries and repositories
|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.
|SaaS container registry offering
The container registry ia available as a software service.
|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.
|Use container registry through REST API
Enables support for automation and integration of container registry through a REST API.
|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.
|Use search to find a container images
Search your group and project’s Container Registry by image name
|Helm chart repository support
Supports storage and retrieval of Helm charts.