--- layout: feature title: GitLab Continuous Integration & Delivery description: "Learn about GitLab's integrated CI/CD pipelines that help to build, test, deploy, and monitor your code." suppress_header: true canonical_path: "/stages-devops-lifecycle/continuous-delivery/" extra_css: - gitlab-feature-landing-page.css - features.css --- .wrapper.gitlab-ee-page .image-title .color-bg %div %h1 GitLab Continuous Integration & Delivery %h3#ci-subt GitLab has integrated CI/CD pipelines to build, test, deploy, and monitor your code = link_to "Try GitLab for Free", "/free-trial/", class: "btn cta-btn btn-white" .sub-wrapper .container .row .hidden-xs.hidden-sm.col-md-4.col-md-offset-1 = image_tag "/images/home/forrester-ci-wave-graphic.svg", class: "hidden-xs", alt: "Best in class continuous integration" .col-xs-12.col-md-6 %h2 Rated #1 in the Forrester CI Wave™ %p “GitLab supports development teams with a well-documented installation and configuration processes, an easy-to-follow UI, and a flexible per-seat pricing model that supports self service. GitLab’s vision is to serve enterprise-scale, integrated software development teams that want to spend more time writing code and less time maintaining their tool chain.” - Forrester CI Wave™ = link_to "Learn more", "/resources/forrester-wave-ci-2017/", class: "btn cta-btn accent" %hr.divider/ .row.advantages .col-xs-1.col-md-1 .col-xs-10.col-md-10 %h2 What Are The Advantages? %ul %li %b Integrated: GitLab CI/CD is part of GitLab. You can use it for free on %a{href: "https://gitlab.com/"} GitLab.com %li %b Easy to learn: See our %a{href: "https://docs.gitlab.com/ee/ci/quick_start/"} Quick Start guide %li %b Beautiful: GitLab CI/CD offers the same great experience as GitLab. Familiar, easy to use, and beautiful. %li %b Scalable: Tests run distributed on separate machines of which you can add as many as you want %li %b Faster results: Each build can be split in multiple jobs that run in parallel on multiple machines %li %b Continuous Delivery (CD): multiple stages, manual deploys, %a{href: "https://docs.gitlab.com/ee/ci/environments.html"} environments, and %a{href: "https://docs.gitlab.com/ee/ci/variables/"} variables %li %b Open source: CI/CD is included with both the open source GitLab Community Edition and the proprietary GitLab Enterprise Edition .col-xs-1.col-md-1 .col-xs-10.col-md-10.col-md-offset-1 = image_tag "/images/ci/ci-cd-test-deploy-illustration_2x.png", alt: "GitLab CI/CD", style: "margin-top: 40px;" %hr.divider/ .row.more-features .col-xs-1.col-md-1 .col-xs-10.col-md-10 %h2 Features %ul %li %b Multi-platform: you can execute builds on Unix, Windows, macOS, and any other platform that supports Go. %li %b Multi-language: build scripts are command line driven and work with Java, PHP, Ruby, C, and any other language. %li %b Stable: your builds run on a different machine than GitLab. %li %b Parallel builds: GitLab CI/CD splits builds over multiple machines, for fast execution. %li %b Realtime logging: a link in the merge request takes you to the current build log that updates dynamically. %li %b Versioned tests: a %a{href: "https://docs.gitlab.com/ee/ci/yaml/"} .gitlab-ci.yml file that contains your tests, allowing everyone to contribute changes and ensuring every branch gets the tests it needs. %li %b Pipeline: you can define multiple jobs per stage and you can = succeed "." do %a{href: "https://docs.gitlab.com/ee/ci/triggers/"} trigger other builds %li %b Autoscaling: you can = link_to "automatically spin up and down VM's", "/blog/2016/03/29/gitlab-runner-1-1-released/" to make sure your builds get processed immediately and minimize costs. %li %b Build artifacts: you can upload binaries and other %a{href: "https://docs.gitlab.com/ee/ci/build_artifacts/"} build artifacts to GitLab and browse and download them. %li %b Test locally there are %a{href: "https://docs.gitlab.com/runner/executors/"} multiple executors and you can = succeed "." do %a{href: "https://gitlab.com/gitlab-org/gitlab-runner/issues/312"} reproduce tests locally %li %b Docker support: you can use custom Docker images, spin up %a{href: "https://docs.gitlab.com/ee/ci/services/"} services as part of testing, = succeed "," do %a{href: "https://docs.gitlab.com/ee/ci/docker/using_docker_build.html"} build new Docker images even run on Kubernetes. .text-center %a.btn.cta-btn.accent{ href: "https://gitlab.com/groups/gitlab-org/-/epics/494" } Strategy %a.btn.cta-btn.white-with-border{ href: "https://docs.gitlab.com/ee/ci/", :style => "margin-left: 20px" } Documentation .col-xs-1.col-md-1 %hr.divider/ .row .col-xs-12.col-md-6.col-md-offset-1 %h2 Entire DevOps lifecycle %ul %li %b Build your application using GitLab Runners %li Run unit and integration %b tests to check if your code is valid %li Look at a live preview of your development branch with %a{href: "/product/review-apps/"}Review Apps before merging into stable %li %b Deploy to multiple environments like staging and production, and support advanced features such as canary deployments %li %b Monitor performances and status of your application .hidden-xs.hidden-sm.col-md-4 = image_tag "/images/ci/ci-cd-devops-loop_2x.png", alt: "DevOps", style: "margin-top: 80px;" %hr.divider/ .row .hidden-xs.hidden-sm.col-md-4.col-md-offset-1 = image_tag "/images/ci/ci-cd-integrated_2x.png", class: "hidden-xs", alt: "Integrated GitLab CI" .col-xs-12.col-md-6 %h2 Fully integrated with GitLab %ul %li %b Quick project setup: Add projects with a single click, all hooks are set up automatically via the GitLab API. %li %b Merge request integration: See the status of each build within the Merge Request in GitLab. %hr.divider/ .row.architecture .col-xs-1.col-md-1 .col-xs-12.col-md-6 %h2 Architecture .architecture-text %p %b GitLab CI/CD is a part of GitLab, a web application with an API that stores its state in a database. It manages projects/builds and provides a nice user interface, besides all the features of GitLab. %p %b GitLab Runner is an application which processes builds. It can be deployed separately and works with GitLab CI/CD through an API. %p In order to run tests, you need at least one %b GitLab instance and one = succeed "." do %b GitLab Runner .hidden-xs.hidden-sm.col-md-4 = image_tag "/images/ci/ci-cd-architecture_2x.png", class: "gitlab-arch hidden-xs", alt: "Gitlab ci cd png" %hr#gitlab-runner.divider/ .row.installation .hidden-xs.hidden-sm.col-md-4.col-md-offset-1 = image_tag "/images/ci/gitlab-runner-logo_2x.png", class: "hidden-xs", alt: "Integrated GitLab CI", style: "width: 60%; margin-top: 60px; margin-left: 20%;" .col-xs-12.col-md-6 %h2#gitlab-runner GitLab Runner %p To perform the actual build, you need to install GitLab Runner which is written in Go. %p It can run on any platform for which you can build Go binaries, including Linux, macOS, Windows, FreeBSD and Docker. %p It can test any programming language including .Net, Java, Python, C, PHP and others. %p GitLab Runner has = succeed "," do %a{href: "https://docs.gitlab.com/runner#features"} many features including = succeed "," do %a{href: "https://docs.gitlab.com/runner/configuration/autoscale.html"} autoscaling = succeed "," do %a{href: "https://docs.gitlab.com/runner/executors/docker.html"} great Docker support and the ability to run multiple jobs concurrently. %p %h3 %a{href: "https://docs.gitlab.com/runner/install"} Install GitLab Runner %hr.divider/ .row.links .col-xs-1.col-md-1 .col-xs-11.col-md-6 %h2 Help and More Information %ul %li Please see = link_to "Get help for GitLab", "/get-help/" if you have questions %li View a step-by-step guide to %a{href: "https://www.youtube.com/watch?v=RlEVGOpYF5Y"} migrate from Jenkins to GitLab %li Propose and discuss new features of CI/CD in the %a{href: "https://gitlab.com/gitlab-org/gitlab-ce/issues"} GitLab CE issue tracker and tag them with the 'CI/CD' label %li More information can be found in the %a{href: "https://docs.gitlab.com/ee/ci/"} GitLab CI/CD documentation %li Since version 8.0, GitLab CE/EE and GitLab CI/CD are a single product %li See the presentation on %a{href: "https://docs.google.com/presentation/d/1OGgk2Tcxbpl7DJaIOzCX4Vqg3dlwfELC3u2jEeCBbDk"} Why CI/CD? .hidden-xs.hidden-sm.col-md-4 = image_tag "/images/ci/gitlab-ci-cd-logo_2x.png", class: "gitlab-arch hidden-xs", alt: "Gitlab ci cd logo png", style: "width: 60%;" %hr.divider/