On This Page
- GitLab vs. GitHub Solutions to Common Technical Decision Maker (TDM) Problems
- 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
💚Complete Support 💛Partial Support 💔No Support
GitLab vs. GitHub Solutions to Common Technical Decision Maker (TDM) Problems
|TDM Problem||The DevOps Solution||GitLab||GitHub|
|Reduce time to build and test code, reduce complexity||PIPELINE ORCHESTRATION||💚
Parent-Child pipelines run concurrently. Configurations can be compartmentalized into smaller child pipelines.
⚠ No Pipeline Orchestration resulting in longer pipeline run times.
|Eliminate code update errors and conflicts.||MERGE ORCHESTRATION||💚
Advanced Merge Train processing logic keeps your main development branch green.
⚠ No advanced Merge Train processing logic resulting in more code commit conflicts.
|Reduce initial configuration time and learning curve.||PRECONFIGURED PIPELINES||💚
Auto DevOps provides out-of-the-box pipeline configuration.
⚠ No Preconfigured Pipelines resulting in longer pipeline setup time.
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|
|Preview App before Merge to reduce defects, shorten development time||Preview changes with review apps. Environments Autostop for review apps|
|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|
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 Operational Costs|
|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|
|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|
GitLab CI Compliance Differentiators
|PCI Compliance||GitLab addresses application security, which is a critical element for the enterprise wishing to be PCI-compliant.|
|HIPAA||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.
|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.