Merge branch 'ci-wording' into 'master'
* Adds pipelines page to CI docs. * Adds image of pipelines list (although currently missing border that is on other images). * Changes CI to CI/CD in `/doc` and `/doc/ci` * Sorts user documentation in `/doc` Partially fixes #17733. See merge request !4660
This commit is contained in:
commit
39c434630a
7 changed files with 88 additions and 45 deletions
|
@ -3,17 +3,17 @@
|
||||||
## User documentation
|
## User documentation
|
||||||
|
|
||||||
- [API](api/README.md) Automate GitLab via a simple and powerful API.
|
- [API](api/README.md) Automate GitLab via a simple and powerful API.
|
||||||
- [CI](ci/README.md) GitLab Continuous Integration (CI) getting started, `.gitlab-ci.yml` options, and examples.
|
- [CI/CD](ci/README.md) GitLab Continuous Integration (CI) and Continuous Delivery (CD) getting started, `.gitlab-ci.yml` options, and examples.
|
||||||
- [GitLab as OAuth2 authentication service provider](integration/oauth_provider.md). It allows you to login to other applications from GitLab.
|
- [GitLab as OAuth2 authentication service provider](integration/oauth_provider.md). It allows you to login to other applications from GitLab.
|
||||||
|
- [Container Registry](container_registry/README.md) Learn how to use GitLab Container Registry.
|
||||||
- [GitLab Basics](gitlab-basics/README.md) Find step by step how to start working on your commandline and on GitLab.
|
- [GitLab Basics](gitlab-basics/README.md) Find step by step how to start working on your commandline and on GitLab.
|
||||||
- [Importing to GitLab](workflow/importing/README.md).
|
- [Importing to GitLab](workflow/importing/README.md)
|
||||||
- [Markdown](markdown/markdown.md) GitLab's advanced formatting system.
|
- [Markdown](markdown/markdown.md) GitLab's advanced formatting system.
|
||||||
- [Migrating from SVN](workflow/importing/migrating_from_svn.md) Convert a SVN repository to Git and GitLab
|
- [Migrating from SVN](workflow/importing/migrating_from_svn.md) Convert a SVN repository to Git and GitLab.
|
||||||
- [Permissions](permissions/permissions.md) Learn what each role in a project (external/guest/reporter/developer/master/owner) can do.
|
- [Permissions](permissions/permissions.md) Learn what each role in a project (external/guest/reporter/developer/master/owner) can do.
|
||||||
- [Profile Settings](profile/README.md)
|
- [Profile Settings](profile/README.md)
|
||||||
- [Project Services](project_services/project_services.md) Integrate a project with external services, such as CI and chat.
|
- [Project Services](project_services/project_services.md) Integrate a project with external services, such as CI and chat.
|
||||||
- [Public access](public_access/public_access.md) Learn how you can allow public and internal access to projects.
|
- [Public access](public_access/public_access.md) Learn how you can allow public and internal access to projects.
|
||||||
- [Container Registry](container_registry/README.md) Learn how to use GitLab Container Registry.
|
|
||||||
- [SSH](ssh/README.md) Setup your ssh keys and deploy keys for secure access to your projects.
|
- [SSH](ssh/README.md) Setup your ssh keys and deploy keys for secure access to your projects.
|
||||||
- [Webhooks](web_hooks/web_hooks.md) Let GitLab notify you when new code has been pushed to your project.
|
- [Webhooks](web_hooks/web_hooks.md) Let GitLab notify you when new code has been pushed to your project.
|
||||||
- [Workflow](workflow/README.md) Using GitLab functionality and importing projects from GitHub and SVN.
|
- [Workflow](workflow/README.md) Using GitLab functionality and importing projects from GitHub and SVN.
|
||||||
|
@ -24,15 +24,15 @@
|
||||||
external authentication with LDAP, SAML, CAS and additional Omniauth providers.
|
external authentication with LDAP, SAML, CAS and additional Omniauth providers.
|
||||||
- [Custom git hooks](hooks/custom_hooks.md) Custom git hooks (on the filesystem) for when webhooks aren't enough.
|
- [Custom git hooks](hooks/custom_hooks.md) Custom git hooks (on the filesystem) for when webhooks aren't enough.
|
||||||
- [Install](install/README.md) Requirements, directory structures and installation from source.
|
- [Install](install/README.md) Requirements, directory structures and installation from source.
|
||||||
- [Restart GitLab](administration/restart_gitlab.md) Learn how to restart GitLab and its components
|
- [Restart GitLab](administration/restart_gitlab.md) Learn how to restart GitLab and its components.
|
||||||
- [Integration](integration/README.md) How to integrate with systems such as JIRA, Redmine, Twitter.
|
- [Integration](integration/README.md) How to integrate with systems such as JIRA, Redmine, Twitter.
|
||||||
- [Issue closing](customization/issue_closing.md) Customize how to close an issue from commit messages.
|
- [Issue closing](customization/issue_closing.md) Customize how to close an issue from commit messages.
|
||||||
- [Libravatar](customization/libravatar.md) Use Libravatar for user avatars.
|
- [Libravatar](customization/libravatar.md) Use Libravatar for user avatars.
|
||||||
- [Log system](administration/logs.md) Log system.
|
- [Log system](administration/logs.md) Log system.
|
||||||
- [Environment Variables](administration/environment_variables.md) to configure GitLab.
|
- [Environment Variables](administration/environment_variables.md) to configure GitLab.
|
||||||
- [Operations](operations/README.md) Keeping GitLab up and running
|
- [Operations](operations/README.md) Keeping GitLab up and running.
|
||||||
- [Raketasks](raketasks/README.md) Backups, maintenance, automatic webhook setup and the importing of projects.
|
- [Raketasks](raketasks/README.md) Backups, maintenance, automatic webhook setup and the importing of projects.
|
||||||
- [Repository checks](administration/repository_checks.md) Periodic Git repository checks
|
- [Repository checks](administration/repository_checks.md) Periodic Git repository checks.
|
||||||
- [Security](security/README.md) Learn what you can do to further secure your GitLab instance.
|
- [Security](security/README.md) Learn what you can do to further secure your GitLab instance.
|
||||||
- [System hooks](system_hooks/system_hooks.md) Notifications when users, projects and keys are changed.
|
- [System hooks](system_hooks/system_hooks.md) Notifications when users, projects and keys are changed.
|
||||||
- [Update](update/README.md) Update guides to upgrade your installation.
|
- [Update](update/README.md) Update guides to upgrade your installation.
|
||||||
|
@ -41,11 +41,11 @@
|
||||||
- [Migrate GitLab CI to CE/EE](migrate_ci_to_ce/README.md) Follow this guide to migrate your existing GitLab CI data to GitLab CE/EE.
|
- [Migrate GitLab CI to CE/EE](migrate_ci_to_ce/README.md) Follow this guide to migrate your existing GitLab CI data to GitLab CE/EE.
|
||||||
- [Git LFS configuration](workflow/lfs/lfs_administration.md)
|
- [Git LFS configuration](workflow/lfs/lfs_administration.md)
|
||||||
- [Housekeeping](administration/housekeeping.md) Keep your Git repository tidy and fast.
|
- [Housekeeping](administration/housekeeping.md) Keep your Git repository tidy and fast.
|
||||||
- [GitLab Performance Monitoring](monitoring/performance/introduction.md) Configure GitLab and InfluxDB for measuring performance metrics
|
- [GitLab Performance Monitoring](monitoring/performance/introduction.md) Configure GitLab and InfluxDB for measuring performance metrics.
|
||||||
- [Monitoring uptime](monitoring/health_check.md) Check the server status using the health check endpoint
|
- [Monitoring uptime](monitoring/health_check.md) Check the server status using the health check endpoint.
|
||||||
- [Sidekiq Troubleshooting](administration/troubleshooting/sidekiq.md) Debug when Sidekiq appears hung and is not processing jobs
|
- [Sidekiq Troubleshooting](administration/troubleshooting/sidekiq.md) Debug when Sidekiq appears hung and is not processing jobs.
|
||||||
- [High Availability](administration/high_availability/README.md) Configure multiple servers for scaling or high availability
|
- [High Availability](administration/high_availability/README.md) Configure multiple servers for scaling or high availability.
|
||||||
- [Container Registry](administration/container_registry.md) Configure Docker Registry with GitLab
|
- [Container Registry](administration/container_registry.md) Configure Docker Registry with GitLab.
|
||||||
|
|
||||||
## Contributor documentation
|
## Contributor documentation
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
- [Get started with GitLab CI](quick_start/README.md)
|
- [Get started with GitLab CI](quick_start/README.md)
|
||||||
- [CI examples for various languages](examples/README.md)
|
- [CI examples for various languages](examples/README.md)
|
||||||
- [Learn how to enable or disable GitLab CI](enable_or_disable_ci.md)
|
- [Learn how to enable or disable GitLab CI](enable_or_disable_ci.md)
|
||||||
|
- [Pipelines and builds](pipelines.md)
|
||||||
- [Environments and deployments](environments.md)
|
- [Environments and deployments](environments.md)
|
||||||
- [Learn how `.gitlab-ci.yml` works](yaml/README.md)
|
- [Learn how `.gitlab-ci.yml` works](yaml/README.md)
|
||||||
- [Configure a Runner, the application that runs your builds](runners/README.md)
|
- [Configure a Runner, the application that runs your builds](runners/README.md)
|
||||||
|
|
|
@ -52,7 +52,7 @@ Clicking on an environment will show the history of deployments.
|
||||||
Only deploys that happen after your `.gitlab-ci.yml` is properly configured will
|
Only deploys that happen after your `.gitlab-ci.yml` is properly configured will
|
||||||
show up in the environments and deployments lists.
|
show up in the environments and deployments lists.
|
||||||
|
|
||||||
[Pipelines]: quick_start/README.md
|
[Pipelines]: pipelines.md
|
||||||
[jobs]: yaml/README.md#jobs
|
[jobs]: yaml/README.md#jobs
|
||||||
[environments]: #environments
|
[environments]: #environments
|
||||||
[deployments]: #deployments
|
[deployments]: #deployments
|
||||||
|
|
38
doc/ci/pipelines.md
Normal file
38
doc/ci/pipelines.md
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
# Introduction to pipelines and builds
|
||||||
|
|
||||||
|
>**Note:**
|
||||||
|
Introduced in GitLab 8.8.
|
||||||
|
|
||||||
|
## Pipelines
|
||||||
|
|
||||||
|
A pipeline is a group of [builds] that get executed in [stages] (batches). All
|
||||||
|
of the builds in a stage are executed in parallel (if there are enough
|
||||||
|
concurrent [runners]), and if they all succeed, the pipeline moves on to the
|
||||||
|
next stage. If one of the builds fails, the next stage is not (usually)
|
||||||
|
executed.
|
||||||
|
|
||||||
|
## Builds
|
||||||
|
|
||||||
|
Builds are individual runs of [jobs]. Not to be confused with a `build` job or
|
||||||
|
`build` stage.
|
||||||
|
|
||||||
|
## Defining pipelines
|
||||||
|
|
||||||
|
Pipelines are defined in `.gitlab-ci.yml` by specifying [jobs] that run in
|
||||||
|
[stages].
|
||||||
|
|
||||||
|
See full [documentation](yaml/README.md#jobs).
|
||||||
|
|
||||||
|
## Seeing pipeline status
|
||||||
|
|
||||||
|
You can find the current and historical pipeline runs under **Pipelines** for your
|
||||||
|
project.
|
||||||
|
|
||||||
|
## Seeing build status
|
||||||
|
|
||||||
|
Clicking on a pipeline will show the builds that were run for that pipeline.
|
||||||
|
|
||||||
|
[builds]: #builds
|
||||||
|
[jobs]: yaml/README.md#jobs
|
||||||
|
[stages]: yaml/README.md#stages
|
||||||
|
[runners]: runners/README.md
|
|
@ -4,41 +4,41 @@
|
||||||
is fully integrated into GitLab itself and is [enabled] by default on all
|
is fully integrated into GitLab itself and is [enabled] by default on all
|
||||||
projects.
|
projects.
|
||||||
|
|
||||||
The TL;DR version of how GitLab CI works is the following.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
GitLab offers a [continuous integration][ci] service. If you
|
GitLab offers a [continuous integration][ci] service. If you
|
||||||
[add a `.gitlab-ci.yml` file][yaml] to the root directory of your repository,
|
[add a `.gitlab-ci.yml` file][yaml] to the root directory of your repository,
|
||||||
and configure your GitLab project to use a [Runner], then each merge request or
|
and configure your GitLab project to use a [Runner], then each merge request or
|
||||||
push triggers a build.
|
push triggers your CI [pipeline].
|
||||||
|
|
||||||
The `.gitlab-ci.yml` file tells the GitLab runner what to do. By default it
|
The `.gitlab-ci.yml` file tells the GitLab runner what to do. By default it runs
|
||||||
runs three [stages]: `build`, `test`, and `deploy`.
|
a pipeline with three [stages]: `build`, `test`, and `deploy`. You don't need to
|
||||||
|
use all three stages; stages with no jobs are simply ignored.
|
||||||
|
|
||||||
If everything runs OK (no non-zero return values), you'll get a nice green
|
If everything runs OK (no non-zero return values), you'll get a nice green
|
||||||
checkmark associated with the pushed commit or merge request. This makes it
|
checkmark associated with the pushed commit or merge request. This makes it
|
||||||
easy to see whether a merge request will cause any of the tests to fail before
|
easy to see whether a merge request caused any of the tests to fail before
|
||||||
you even look at the code.
|
you even look at the code.
|
||||||
|
|
||||||
Most projects only use GitLab's CI service to run the test suite so that
|
Most projects use GitLab's CI service to run the test suite so that
|
||||||
developers get immediate feedback if they broke something.
|
developers get immediate feedback if they broke something.
|
||||||
|
|
||||||
|
There's a growing trend to use continuous delivery and continuous deployment to
|
||||||
|
automatically deploy tested code to staging and production environments.
|
||||||
|
|
||||||
So in brief, the steps needed to have a working CI can be summed up to:
|
So in brief, the steps needed to have a working CI can be summed up to:
|
||||||
|
|
||||||
1. Add `.gitlab-ci.yml` to the root directory of your repository
|
1. Add `.gitlab-ci.yml` to the root directory of your repository
|
||||||
1. Configure a Runner
|
1. Configure a Runner
|
||||||
|
|
||||||
From there on, on every push to your Git repository, the build will be
|
From there on, on every push to your Git repository, the Runner will
|
||||||
automagically started by the Runner and will appear under the project's
|
automagically start the pipeline and the pipeline will appear under the
|
||||||
`/builds` page.
|
project's `/pipelines` page.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This guide assumes that you:
|
This guide assumes that you:
|
||||||
|
|
||||||
- have a working GitLab instance of version 8.0 or higher or are using
|
- have a working GitLab instance of version 8.0 or higher or are using
|
||||||
[GitLab.com](https://gitlab.com/users/sign_in)
|
[GitLab.com](https://gitlab.com)
|
||||||
- have a project in GitLab that you would like to use CI for
|
- have a project in GitLab that you would like to use CI for
|
||||||
|
|
||||||
Let's break it down to pieces and work on solving the GitLab CI puzzle.
|
Let's break it down to pieces and work on solving the GitLab CI puzzle.
|
||||||
|
@ -57,15 +57,14 @@ On any push to your repository, GitLab will look for the `.gitlab-ci.yml`
|
||||||
file and start builds on _Runners_ according to the contents of the file,
|
file and start builds on _Runners_ according to the contents of the file,
|
||||||
for that commit.
|
for that commit.
|
||||||
|
|
||||||
Because `.gitlab-ci.yml` is in the repository, it is version controlled,
|
Because `.gitlab-ci.yml` is in the repository and is version controlled, old
|
||||||
old versions still build successfully, forks can easily make use of CI,
|
versions still build successfully, forks can easily make use of CI, branches can
|
||||||
branches can have separate builds and you have a single source of truth for CI.
|
have different pipelines and jobs, and you have a single source of truth for CI.
|
||||||
You can read more about the reasons why we are using `.gitlab-ci.yml`
|
You can read more about the reasons why we are using `.gitlab-ci.yml` [in our
|
||||||
[in our blog about it][blog-ci].
|
blog about it][blog-ci].
|
||||||
|
|
||||||
**Note:** `.gitlab-ci.yml` is a [YAML](https://en.wikipedia.org/wiki/YAML) file
|
**Note:** `.gitlab-ci.yml` is a [YAML](https://en.wikipedia.org/wiki/YAML) file
|
||||||
so you have to pay extra attention to the indentation. Always use spaces, not
|
so you have to pay extra attention to indentation. Always use spaces, not tabs.
|
||||||
tabs.
|
|
||||||
|
|
||||||
### Creating a simple `.gitlab-ci.yml` file
|
### Creating a simple `.gitlab-ci.yml` file
|
||||||
|
|
||||||
|
@ -108,7 +107,7 @@ If you want to check whether your `.gitlab-ci.yml` file is valid, there is a
|
||||||
Lint tool under the page `/ci/lint` of your GitLab instance. You can also find
|
Lint tool under the page `/ci/lint` of your GitLab instance. You can also find
|
||||||
the link under **Settings > CI settings** in your project.
|
the link under **Settings > CI settings** in your project.
|
||||||
|
|
||||||
For more information and a complete `.gitlab-ci.yml` syntax, please check
|
For more information and a complete `.gitlab-ci.yml` syntax, please read
|
||||||
[the documentation on .gitlab-ci.yml](../yaml/README.md).
|
[the documentation on .gitlab-ci.yml](../yaml/README.md).
|
||||||
|
|
||||||
### Push `.gitlab-ci.yml` to GitLab
|
### Push `.gitlab-ci.yml` to GitLab
|
||||||
|
@ -122,7 +121,8 @@ git commit -m "Add .gitlab-ci.yml"
|
||||||
git push origin master
|
git push origin master
|
||||||
```
|
```
|
||||||
|
|
||||||
Now if you go to the **Builds** page you will see that the builds are pending.
|
Now if you go to the **Pipelines** page you will see that the pipeline is
|
||||||
|
pending.
|
||||||
|
|
||||||
You can also go to the **Commits** page and notice the little clock icon next
|
You can also go to the **Commits** page and notice the little clock icon next
|
||||||
to the commit SHA.
|
to the commit SHA.
|
||||||
|
@ -138,15 +138,14 @@ Notice that there are two jobs pending which are named after what we wrote in
|
||||||
`.gitlab-ci.yml`. The red triangle indicates that there is no Runner configured
|
`.gitlab-ci.yml`. The red triangle indicates that there is no Runner configured
|
||||||
yet for these builds.
|
yet for these builds.
|
||||||
|
|
||||||
The next step is to configure a Runner so that it picks the pending jobs.
|
The next step is to configure a Runner so that it picks the pending builds.
|
||||||
|
|
||||||
## Configuring a Runner
|
## Configuring a Runner
|
||||||
|
|
||||||
In GitLab, Runners run the builds that you define in `.gitlab-ci.yml`.
|
In GitLab, Runners run the builds that you define in `.gitlab-ci.yml`. A Runner
|
||||||
A Runner can be a virtual machine, a VPS, a bare-metal machine, a docker
|
can be a virtual machine, a VPS, a bare-metal machine, a docker container or
|
||||||
container or even a cluster of containers. GitLab and the Runners communicate
|
even a cluster of containers. GitLab and the Runners communicate through an API,
|
||||||
through an API, so the only needed requirement is that the machine on which the
|
so the only requirement is that the Runner's machine has Internet access.
|
||||||
Runner is configured to have Internet access.
|
|
||||||
|
|
||||||
A Runner can be specific to a certain project or serve multiple projects in
|
A Runner can be specific to a certain project or serve multiple projects in
|
||||||
GitLab. If it serves all projects it's called a _Shared Runner_.
|
GitLab. If it serves all projects it's called a _Shared Runner_.
|
||||||
|
@ -188,12 +187,16 @@ To enable **Shared Runners** you have to go to your project's
|
||||||
|
|
||||||
[Read more on Shared Runners](../runners/README.md).
|
[Read more on Shared Runners](../runners/README.md).
|
||||||
|
|
||||||
## Seeing the status of your build
|
## Seeing the status of your pipeline and builds
|
||||||
|
|
||||||
After configuring the Runner successfully, you should see the status of your
|
After configuring the Runner successfully, you should see the status of your
|
||||||
last commit change from _pending_ to either _running_, _success_ or _failed_.
|
last commit change from _pending_ to either _running_, _success_ or _failed_.
|
||||||
|
|
||||||
You can view all builds, by going to the **Builds** page in your project.
|
You can view all pipelines by going to the **Pipelines** page in your project.
|
||||||
|
|
||||||
|
![Commit status](img/pipelines_status.png)
|
||||||
|
|
||||||
|
Or you can view all builds, by going to the **Pipelines > Builds** page.
|
||||||
|
|
||||||
![Commit status](img/builds_status.png)
|
![Commit status](img/builds_status.png)
|
||||||
|
|
||||||
|
@ -238,3 +241,4 @@ CI with various languages.
|
||||||
[runner]: ../runners/README.md
|
[runner]: ../runners/README.md
|
||||||
[enabled]: ../enable_or_disable_ci.md
|
[enabled]: ../enable_or_disable_ci.md
|
||||||
[stages]: ../yaml/README.md#stages
|
[stages]: ../yaml/README.md#stages
|
||||||
|
[pipeline]: ../pipelines.md
|
||||||
|
|
BIN
doc/ci/quick_start/img/pipelines_status.png
Normal file
BIN
doc/ci/quick_start/img/pipelines_status.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 87 KiB |
|
@ -54,7 +54,7 @@ of your repository and contains definitions of how your project should be built.
|
||||||
|
|
||||||
The YAML file defines a set of jobs with constraints stating when they should
|
The YAML file defines a set of jobs with constraints stating when they should
|
||||||
be run. The jobs are defined as top-level elements with a name and always have
|
be run. The jobs are defined as top-level elements with a name and always have
|
||||||
to contain the `script` clause:
|
to contain at least the `script` clause:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
job1:
|
job1:
|
||||||
|
@ -165,7 +165,7 @@ stages:
|
||||||
|
|
||||||
There are also two edge cases worth mentioning:
|
There are also two edge cases worth mentioning:
|
||||||
|
|
||||||
1. If no `stages` is defined in `.gitlab-ci.yml`, then by default the `build`,
|
1. If no `stages` are defined in `.gitlab-ci.yml`, then by default the `build`,
|
||||||
`test` and `deploy` are allowed to be used as job's stage by default.
|
`test` and `deploy` are allowed to be used as job's stage by default.
|
||||||
2. If a job doesn't specify a `stage`, the job is assigned the `test` stage.
|
2. If a job doesn't specify a `stage`, the job is assigned the `test` stage.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue