diff options
Diffstat (limited to 'doc/ci/introduction')
-rw-r--r-- | doc/ci/introduction/img/job_running.png | bin | 99621 -> 0 bytes | |||
-rw-r--r-- | doc/ci/introduction/img/pipeline_status.png | bin | 54243 -> 0 bytes | |||
-rw-r--r-- | doc/ci/introduction/img/rollback.png | bin | 41693 -> 0 bytes | |||
-rw-r--r-- | doc/ci/introduction/index.md | 103 |
4 files changed, 10 insertions, 93 deletions
diff --git a/doc/ci/introduction/img/job_running.png b/doc/ci/introduction/img/job_running.png Binary files differdeleted file mode 100644 index efd138fd4f8..00000000000 --- a/doc/ci/introduction/img/job_running.png +++ /dev/null diff --git a/doc/ci/introduction/img/pipeline_status.png b/doc/ci/introduction/img/pipeline_status.png Binary files differdeleted file mode 100644 index 96881f072e1..00000000000 --- a/doc/ci/introduction/img/pipeline_status.png +++ /dev/null diff --git a/doc/ci/introduction/img/rollback.png b/doc/ci/introduction/img/rollback.png Binary files differdeleted file mode 100644 index 38e0552f4f1..00000000000 --- a/doc/ci/introduction/img/rollback.png +++ /dev/null diff --git a/doc/ci/introduction/index.md b/doc/ci/introduction/index.md index b24ee66fdba..fa5c8c9a606 100644 --- a/doc/ci/introduction/index.md +++ b/doc/ci/introduction/index.md @@ -1,21 +1,21 @@ --- stage: Verify group: Continuous Integration -info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments description: "An overview of Continuous Integration, Continuous Delivery, and Continuous Deployment, as well as an introduction to GitLab CI/CD." type: concepts --- # Introduction to CI/CD with GitLab -In this document, we'll present an overview of the concepts of Continuous Integration, +This document presents an overview of the concepts of Continuous Integration, Continuous Delivery, and Continuous Deployment, as well as an introduction to GitLab CI/CD. -TIP: **Tip:** +NOTE: Out-of-the-box management systems can decrease hours spent on maintaining toolchains by 10% or more. Watch our ["Mastering continuous software development"](https://about.gitlab.com/webcast/mastering-ci-cd/) -webcast to learn about continuous methods and how GitLab’s built-in CI can help you simplify and scale software development. +webcast to learn about continuous methods and how the GitLab built-in CI can help you simplify and scale software development. > For some additional information about GitLab CI/CD: > @@ -90,67 +90,6 @@ application or integration needed. <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> For an overview, see [Introduction to GitLab CI](https://www.youtube.com/watch?v=l5705U8s_nQ&t=397) from a recent GitLab meetup. -### How GitLab CI/CD works - -To use GitLab CI/CD, all you need is an application codebase hosted in a -Git repository, and for your build, test, and deployment -scripts to be specified in a file called [`.gitlab-ci.yml`](../yaml/README.md), -located in the root path of your repository. - -In this file, you can define the scripts you want to run, define include and -cache dependencies, choose commands you want to run in sequence -and those you want to run in parallel, define where you want to -deploy your app, and specify whether you will want to run the scripts automatically -or trigger any of them manually. After you're familiar with -GitLab CI/CD you can add more advanced steps into the configuration file. - -To add scripts to that file, you'll need to organize them in a -sequence that suits your application and are in accordance with -the tests you wish to perform. To visualize the process, imagine -that all the scripts you add to the configuration file are the -same as the commands you run on a terminal on your computer. - -After you've added your `.gitlab-ci.yml` configuration file to your -repository, GitLab will detect it and run your scripts with the -tool called [GitLab Runner](https://docs.gitlab.com/runner/), which -works similarly to your terminal. - -The scripts are grouped into **jobs**, and together they compose -a **pipeline**. A minimalist example of `.gitlab-ci.yml` file -could contain: - -```yaml -before_script: - - apt-get install rubygems ruby-dev -y - -run-test: - script: - - ruby --version -``` - -The `before_script` attribute would install the dependencies -for your app before running anything, and a **job** called -`run-test` would print the Ruby version of the current system. -Both of them compose a **pipeline** triggered at every push -to any branch of the repository. - -GitLab CI/CD not only executes the jobs you've -set but also shows you what's happening during execution, as you -would see in your terminal: - -![job running](img/job_running.png) - -You create the strategy for your app and GitLab runs the pipeline -for you according to what you've defined. Your pipeline status is also -displayed by GitLab: - -![pipeline status](img/pipeline_status.png) - -At the end, if anything goes wrong, you can easily -[roll back](../environments/index.md#retrying-and-rolling-back) all the changes: - -![rollback button](img/rollback.png) - ### Basic CI/CD workflow Consider the following example for how GitLab CI/CD fits in a @@ -177,7 +116,7 @@ After you're happy with your implementation: ![GitLab workflow example](img/gitlab_workflow_example_11_9.png) GitLab CI/CD is capable of doing a lot more, but this workflow -exemplifies GitLab's ability to track the entire process, +exemplifies the ability of GitLab to track the entire process, without the need for an external tool to deliver your software. And, most usefully, you can visualize all the steps through the GitLab UI. @@ -191,7 +130,7 @@ lifecycle, as shown in the illustration below. ![Deeper look into the basic CI/CD workflow](img/gitlab_workflow_example_extended_v12_3.png) If you look at the image from the left to the right, -you'll see some of the features available in GitLab +you can see some of the features available in GitLab according to each stage (Verify, Package, Release). 1. **Verify**: @@ -202,18 +141,16 @@ according to each stage (Verify, Package, Release). - Perform a series of tests, such as [Container Scanning](../../user/application_security/container_scanning/index.md) **(ULTIMATE)**, [Dependency Scanning](../../user/application_security/dependency_scanning/index.md) **(ULTIMATE)**, and [Unit tests](../unit_test_reports.md). - Deploy your changes with [Review Apps](../review_apps/index.md) to preview the app changes on every branch. 1. **Package**: - - Store Docker images with [Container Registry](../../user/packages/container_registry/index.md). - - Store NPM packages with [NPM Registry](../../user/packages/npm_registry/index.md). **(PREMIUM)** - - Store Maven artifacts with [Maven Repository](../../user/packages/maven_repository/index.md). **(PREMIUM)** - - Store Conan packages with [Conan Repository](../../user/packages/conan_repository/index.md). **(PREMIUM)** + - Store Docker images with the [Container Registry](../../user/packages/container_registry/index.md). + - Store packages with the [Package Registry](../../user/packages/package_registry/index.md). 1. **Release**: - Continuous Deployment, automatically deploying your app to production. - Continuous Delivery, manually click to deploy your app to production. - Deploy static websites with [GitLab Pages](../../user/project/pages/index.md). - Ship features to only a portion of your pods and let a percentage of your user base to visit the temporarily deployed feature with [Canary Deployments](../../user/project/canary_deployments.md). **(PREMIUM)** - - Deploy your features behind [Feature Flags](../../operations/feature_flags.md). **(PREMIUM)** + - Deploy your features behind [Feature Flags](../../operations/feature_flags.md). - Add release notes to any Git tag with [GitLab Releases](../../user/project/releases/index.md). - - View of the current health and status of each CI environment running on Kubernetes with [Deploy Boards](../../user/project/deploy_boards.md). **(PREMIUM)** + - View of the current health and status of each CI environment running on Kubernetes with [Deploy Boards](../../user/project/deploy_boards.md). - Deploy your application to a production environment in a Kubernetes cluster with [Auto Deploy](../../topics/autodevops/stages.md#auto-deploy). With GitLab CI/CD you can also: @@ -228,23 +165,3 @@ To see all CI/CD features, navigate back to the [CI/CD index](../README.md). <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> Watch the video [GitLab CI Live Demo](https://youtu.be/l5705U8s_nQ?t=369) with a deeper overview of GitLab CI/CD. - -### Setting up GitLab CI/CD for the first time - -To get started with GitLab CI/CD, you need to familiarize yourself -with the [`.gitlab-ci.yml`](../yaml/README.md) configuration file -syntax and with its attributes. - -This document [introduces the concepts of GitLab CI/CD in the scope of GitLab Pages](../../user/project/pages/getting_started/pages_from_scratch.md), for deploying static websites. -Although it's meant for users who want to write their own Pages -script from scratch, it also serves as an introduction to the setup process for GitLab CI/CD. -It covers the first general steps of writing a CI/CD configuration -file, so we recommend you read through it to understand GitLab's CI/CD -logic, and learn how to write your own script (or tweak an -existing one) for any application. - -For a deep view of GitLab's CI/CD configuration options, check the -[`.gitlab-ci.yml` full reference](../yaml/README.md). - -For help making your pipelines faster and more efficient, see the -[pipeline efficiency documentation](../pipelines/pipeline_efficiency.md). |