{
  "slug": "gitlab-ci",
  "name": "GitLab CI/CD",
  "category": "CI/CD",
  "website": "https://about.gitlab.com",
  "description": "CI/CD pipelines built into the GitLab DevOps platform.",
  "openRfpCount": 0,
  "url": "https://saasrfp.com/vendors/gitlab-ci",
  "features": [
    {
      "slug": "deployment-environments",
      "name": "Deployment environments",
      "description": "Tracks deploys to staging and production environments.",
      "group": "Deployment & Security"
    },
    {
      "slug": "manual-approvals",
      "name": "Manual approvals",
      "description": "Pauses a pipeline until a person approves the next step.",
      "group": "Deployment & Security"
    },
    {
      "slug": "secrets-management",
      "name": "Secrets management",
      "description": "Stores credentials and injects them into jobs at run time.",
      "group": "Deployment & Security"
    },
    {
      "slug": "audit-logs",
      "name": "Audit logs",
      "description": "Records who changed pipelines, settings and secrets.",
      "group": "Deployment & Security"
    },
    {
      "slug": "pipeline-as-code",
      "name": "Pipeline as code",
      "description": "Defines build and deploy pipelines in a file stored in the repository.",
      "group": "Pipelines"
    },
    {
      "slug": "parallel-jobs",
      "name": "Parallel jobs",
      "description": "Runs several jobs at the same time to shorten a pipeline.",
      "group": "Pipelines"
    },
    {
      "slug": "build-matrix",
      "name": "Build matrix",
      "description": "Runs one job across many versions, platforms or configurations.",
      "group": "Pipelines"
    },
    {
      "slug": "pipeline-triggers",
      "name": "Pipeline triggers",
      "description": "Starts pipelines on pushes, pull requests, tags, schedules or API calls.",
      "group": "Pipelines"
    },
    {
      "slug": "merge-request-pipelines",
      "name": "Merge request pipelines",
      "description": "Runs pipelines on merge requests and shows results inline.",
      "group": "Platform-Specific"
    },
    {
      "slug": "review-apps",
      "name": "Review apps",
      "description": "Deploys a temporary environment for each merge request.",
      "group": "Platform-Specific"
    },
    {
      "slug": "hosted-runners",
      "name": "Hosted runners",
      "description": "Runs jobs on vendor-managed Linux, Windows or macOS machines.",
      "group": "Runners & Compute"
    },
    {
      "slug": "self-hosted-runners",
      "name": "Self-hosted runners",
      "description": "Runs jobs on machines that the customer manages.",
      "group": "Runners & Compute"
    },
    {
      "slug": "docker-builds",
      "name": "Docker builds",
      "description": "Builds container images and runs jobs inside containers.",
      "group": "Runners & Compute"
    },
    {
      "slug": "dependency-caching",
      "name": "Dependency caching",
      "description": "Caches dependencies between runs to speed up builds.",
      "group": "Runners & Compute"
    },
    {
      "slug": "test-reporting",
      "name": "Test reporting",
      "description": "Collects test results and shows failures for each run.",
      "group": "Testing & Artifacts"
    },
    {
      "slug": "test-splitting",
      "name": "Test splitting",
      "description": "Spreads a test suite across parallel jobs by timing data.",
      "group": "Testing & Artifacts"
    },
    {
      "slug": "build-artifacts",
      "name": "Build artifacts",
      "description": "Stores files that a job produces for later download or deploy.",
      "group": "Testing & Artifacts"
    }
  ],
  "openRfps": []
}