diff --git a/doc/ci/pipelines/index.md b/doc/ci/pipelines/index.md index 95cb113d19160cd140e505e801a877a4bf31a67e..b340430f99cc64e35f16e6891b6f9a1bb7e0e48e 100644 --- a/doc/ci/pipelines/index.md +++ b/doc/ci/pipelines/index.md @@ -363,8 +363,12 @@ downstream projects. On self-managed instances, an administrator can change this ### How pipeline duration is calculated -Total running time for a given pipeline excludes retries and pending -(queued) time. +The total running time for a given pipeline excludes: + +- The duration of the initial run for any job that is retried or manually re-run. +- Any pending (queue) time. + +That means that if a job is retried or manually re-run, only the duration of the latest run is included in the total running time. Each job is represented as a `Period`, which consists of: @@ -373,26 +377,32 @@ Each job is represented as a `Period`, which consists of: A simple example is: -- A (1, 3) -- B (2, 4) +- A (0, 2) +- A' (2, 4) + - This is retrying A +- B (1, 3) - C (6, 7) In the example: -- A begins at 1 and ends at 3. -- B begins at 2 and ends at 4. +- A begins at 0 and ends at 2. +- A' begins at 2 and ends at 4. +- B begins at 1 and ends at 3. - C begins at 6 and ends at 7. Visually, it can be viewed as: ```plaintext 0 1 2 3 4 5 6 7 - AAAAAAA - BBBBBBB +AAAAAAA + BBBBBBB + A'A'A'A CCCC ``` -The union of A, B, and C is (1, 4) and (6, 7). Therefore, the total running time is: +Because A is retried, we ignore it and count only job A'. +The union of B, A', and C is (1, 4) and (6, 7). Therefore, the total +running time is: ```plaintext (4 - 1) + (7 - 6) => 4