Improve job dependencies using graph instead of tree

This replaces the job dependency tree with a graph so that we can
indicate that a job should wait until one or more jobs are complete
before starting.

Project pipeline job definitions are now a flat list, with each job
specifying its dependencies as the job attribute 'dependencies'.

Fixes bug #1166937.

Signed-off-by: Fredrik Medley <fredrik.medley@autoliv.com>
Signed-off-by: Fredrik Medley <fredrik.medley@gmail.com>
Signed-off-by: James E. Blair <jeblair@redhat.com>
Co-Authored-By: James E. Blair <jeblair@redhat.com>
Change-Id: I921940cafeea0738c39deb99357cfd7c91592359
This commit is contained in:
Fredrik Medley
2015-09-28 13:40:20 +02:00
committed by James E. Blair
parent e06a03bb45
commit f8aec83b3b
54 changed files with 726 additions and 444 deletions

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -17,8 +16,7 @@
name: gate
manager: dependent
success-message: Build succeeded (gate).
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: comment-added
@@ -39,8 +37,7 @@
- pipeline:
name: post
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: ref-updated
@@ -49,8 +46,7 @@
- pipeline:
name: experimental
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -107,23 +103,26 @@
- job:
name: project-testfile
files:
- '.*-requires'
- .*-requires
- project:
name: org/project
check:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
gate:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project-testfile
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
- project-testfile:
dependencies: project-merge
post:
jobs:
- project-post
@@ -132,48 +131,58 @@
name: org/project1
check:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project1-project2-integration
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
- project1-project2-integration:
dependencies: project-merge
gate:
queue: integrated
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project1-project2-integration
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
- project1-project2-integration:
dependencies: project-merge
- project:
name: org/project2
gate:
queue: integrated
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project1-project2-integration
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
- project1-project2-integration:
dependencies: project-merge
- project:
name: org/project3
check:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project1-project2-integration
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
- project1-project2-integration:
dependencies: project-merge
gate:
queue: integrated
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project1-project2-integration
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
- project1-project2-integration:
dependencies: project-merge
post:
jobs:
- project-post
@@ -182,9 +191,9 @@
name: org/experimental-project
experimental:
jobs:
- project-merge:
jobs:
- experimental-project-test
- project-merge
- experimental-project-test:
dependencies: project-merge
- project:
name: org/noop-project
@@ -199,16 +208,18 @@
name: org/nonvoting-project
check:
jobs:
- nonvoting-project-merge:
jobs:
- nonvoting-project-test1
- nonvoting-project-test2
- nonvoting-project-merge
- nonvoting-project-test1:
dependencies: nonvoting-project-merge
- nonvoting-project-test2:
dependencies: nonvoting-project-merge
gate:
jobs:
- nonvoting-project-merge:
jobs:
- nonvoting-project-test1
- nonvoting-project-test2
- nonvoting-project-merge
- nonvoting-project-test1:
dependencies: nonvoting-project-merge
- nonvoting-project-test2:
dependencies: nonvoting-project-merge
- project:
name: org/no-jobs-project

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created

View File

@@ -1,13 +1,12 @@
- pipeline:
name: post
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: ref-updated
ref: ^(?!refs/).*$
ignore-deletes: False
ignore-deletes: false
- job:
name: project-post
@@ -20,4 +19,3 @@
post:
jobs:
- project-post

View File

@@ -2,8 +2,7 @@
name: gate
manager: dependent
success-message: Build succeeded (gate).
source:
gerrit
source: gerrit
failure-message: Build failed. For information on how to proceed, see http://wiki.example.org/Test_Failures
footer-message: For CI problems and help debugging, contact ci@example.org
trigger:
@@ -35,4 +34,3 @@
gate:
jobs:
- project-test1

View File

@@ -1,8 +1,7 @@
- pipeline:
name: periodic
manager: independent
source:
gerrit
source: gerrit
trigger:
timer:
- time: '* * * * * */1'

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -13,7 +12,6 @@
gerrit:
verified: -1
- job:
name: project-test-irrelevant-starts-empty

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -13,7 +12,6 @@
gerrit:
verified: -1
- job:
name: project-test-irrelevant-files

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -18,8 +17,7 @@
manager: independent
# Trigger is required, set it to one that is a noop
# during tests that check the timer trigger.
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: ref-updated

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -17,8 +16,7 @@
name: gate
manager: dependent
success-message: Build succeeded (gate).
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: comment-added
@@ -60,13 +58,15 @@
name: org/delete-project
check:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
gate:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -23,8 +22,7 @@
name: gate
manager: dependent
success-message: Build succeeded (gate).
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: comment-added
@@ -69,13 +67,15 @@
name: org/project
check:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge
gate:
jobs:
- project-merge:
jobs:
- project-test1
- project-test2
- project-merge
- project-test1:
dependencies: project-merge
- project-test2:
dependencies: project-merge

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -34,19 +33,23 @@
check:
jobs:
- merge:
jobs:
- test1
- test2
- integration
tags:
- extratag
- test1:
dependencies: merge
- test2:
dependencies: merge
- integration:
dependencies: merge
- project:
name: org/project2
check:
jobs:
- merge:
jobs:
- test1
- test2
- integration
- merge
- test1:
dependencies: merge
- test2:
dependencies: merge
- integration:
dependencies: merge

View File

@@ -1,8 +1,7 @@
- pipeline:
name: periodic
manager: independent
source:
gerrit
source: gerrit
trigger:
timer:
- time: '* * * * * */1'
@@ -10,7 +9,7 @@
smtp:
to: alternative_me@example.com
from: zuul_from@example.com
subject: 'Periodic check for {change.project} succeeded'
subject: Periodic check for {change.project} succeeded
- job:
name: project-bitrot-stable-old

View File

@@ -1,8 +1,7 @@
- pipeline:
name: check
manager: independent
source:
gerrit
source: gerrit
trigger:
gerrit:
- event: patchset-created
@@ -16,8 +15,7 @@
- pipeline:
name: periodic
manager: independent
source:
gerrit
source: gerrit
trigger:
timer:
- time: '* * * * * */1'