2016-06-20 18:10:11 -04:00
|
|
|
# Introduction to pipelines and builds
|
|
|
|
|
|
|
|
>**Note:**
|
|
|
|
Introduced in GitLab 8.8.
|
|
|
|
|
|
|
|
## Pipelines
|
|
|
|
|
2016-10-17 11:00:30 -04:00
|
|
|
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
|
2016-06-20 18:10:11 -04:00
|
|
|
next stage. If one of the builds fails, the next stage is not (usually)
|
|
|
|
executed.
|
|
|
|
|
2016-11-22 05:57:47 -05:00
|
|
|
![Pipelines example](img/pipelines.png)
|
|
|
|
|
2016-06-20 18:10:11 -04:00
|
|
|
## 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
|
|
|
|
|
2016-10-17 11:00:30 -04:00
|
|
|
You can find the current and historical pipeline runs under **Pipelines** for
|
|
|
|
your project.
|
2016-06-20 18:10:11 -04:00
|
|
|
|
|
|
|
## Seeing build status
|
|
|
|
|
|
|
|
Clicking on a pipeline will show the builds that were run for that pipeline.
|
2016-10-05 12:40:13 -04:00
|
|
|
Clicking on an individual build will show you its build trace, and allow you to
|
|
|
|
cancel the build, retry it, or erase the build trace.
|
2016-06-20 18:10:11 -04:00
|
|
|
|
2016-09-21 07:55:43 -04:00
|
|
|
## How the pipeline duration is calculated
|
|
|
|
|
|
|
|
Total running time for a given pipeline would exclude retries and pending
|
|
|
|
(queue) time. We could reduce this problem down to finding the union of
|
|
|
|
periods.
|
|
|
|
|
|
|
|
So each job would be represented as a `Period`, which consists of
|
|
|
|
`Period#first` as when the job started and `Period#last` as when the
|
|
|
|
job was finished. A simple example here would be:
|
|
|
|
|
|
|
|
* A (1, 3)
|
|
|
|
* B (2, 4)
|
|
|
|
* C (6, 7)
|
|
|
|
|
|
|
|
Here A begins from 1, and ends to 3. B begins from 2, and ends to 4.
|
|
|
|
C begins from 6, and ends to 7. Visually it could be viewed as:
|
|
|
|
|
|
|
|
```
|
|
|
|
0 1 2 3 4 5 6 7
|
|
|
|
AAAAAAA
|
|
|
|
BBBBBBB
|
|
|
|
CCCC
|
|
|
|
```
|
|
|
|
|
|
|
|
The union of A, B, and C would be (1, 4) and (6, 7), therefore the
|
|
|
|
total running time should be:
|
|
|
|
|
|
|
|
```
|
|
|
|
(4 - 1) + (7 - 6) => 4
|
|
|
|
```
|
|
|
|
|
2016-08-15 09:13:56 -04:00
|
|
|
## Badges
|
|
|
|
|
2016-10-17 11:00:30 -04:00
|
|
|
Build status and test coverage report badges are available. You can find their
|
|
|
|
respective link in the [Pipelines settings] page.
|
2016-08-18 05:47:46 -04:00
|
|
|
|
2016-06-20 18:10:11 -04:00
|
|
|
[builds]: #builds
|
|
|
|
[jobs]: yaml/README.md#jobs
|
|
|
|
[stages]: yaml/README.md#stages
|
2016-10-17 11:00:30 -04:00
|
|
|
[runners]: runners/READM
|
|
|
|
[pipelines settings]: ../user/project/pipelines/settings.md
|