project-config/zuul.d/pipelines.yaml
James E. Blair ab4651936a Use serial manager for deploy pipeline
This will ensure that every item in a shared pipeline is run in
strict order.

Change-Id: I83a010e1549476ae29df67a1e914f6d9e74d9bc6
2020-05-15 10:37:59 -07:00

433 lines
12 KiB
YAML

# Shared zuul config specific to the OpenStack Project
# Contains definitions of pipelines
- pipeline:
name: check
description: |
Newly uploaded patchsets enter this pipeline to receive an
initial +/-1 Verified vote.
success-message: Build succeeded (check pipeline).
failure-message: |
Build failed (check pipeline). For information on how to proceed, see
https://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing
manager: independent
precedence: low
require:
gerrit:
open: True
current-patchset: True
trigger:
gerrit:
- event: patchset-created
- event: change-restored
- event: comment-added
comment: (?i)^(Patch Set [0-9]+:)?( [\w\\+-]*)*(\n\n)?\s*recheck
- event: comment-added
require-approval:
- Verified: [-1, -2]
username: zuul
approval:
- Workflow: 1
github:
- event: pull_request
action:
- opened
- changed
- reopened
- event: pull_request
action: comment
comment: (?i)^\s*recheck\s*$
start:
github:
status: pending
comment: false
success:
gerrit:
# Note that gerrit keywords are case-sensitive.
Verified: 1
github:
status: 'success'
mysql:
failure:
gerrit:
Verified: -1
github:
status: 'failure'
mysql:
- pipeline:
name: gate
description: |
Changes that have been approved by core reviewers are enqueued
in order in this pipeline, and if they pass tests, will be
merged. For documentation on how gating with Zuul works, please see
https://zuul-ci.org/docs/zuul/user/gating.html
success-message: Build succeeded (gate pipeline).
failure-message: |
Build failed (gate pipeline). For information on how to proceed, see
https://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing
manager: dependent
precedence: normal
post-review: True
require:
gerrit:
open: True
current-patchset: True
approval:
- Verified: [1, 2]
username: zuul
- Workflow: 1
trigger:
gerrit:
- event: comment-added
approval:
- Workflow: 1
- event: comment-added
approval:
- Verified: 1
username: zuul
start:
gerrit:
Verified: 0
success:
gerrit:
Verified: 2
submit: true
mysql:
failure:
gerrit:
Verified: -2
mysql:
window-floor: 20
window-increase-factor: 2
- pipeline:
name: post
description: |
This pipeline runs jobs that operate after each change is
merged. Queue items are identified by the abbreviated hash (git
log --format=%h) of the merge commit.
manager: supercedent
precedence: high
post-review: True
trigger:
gerrit:
- event: ref-updated
ref: ^refs/heads/.*$
success:
mysql:
failure:
mysql:
- pipeline:
name: promote
description: |
This pipeline runs jobs that operate after each change is merged
in order to promote artifacts generated in the gate
pipeline.
success-message: Build succeeded (promote pipeline).
failure-message: |
Build failed (promote pipeline). For information on how to proceed, see
https://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing
manager: supercedent
precedence: high
post-review: True
trigger:
gerrit:
- event: change-merged
success:
gerrit: {}
mysql:
failure:
gerrit: {}
mysql:
- pipeline:
name: pre-release
description: When a commit is tagged with a pre-release tag, this pipeline runs jobs that publish archives and documentation.
manager: independent
precedence: high
post-review: True
trigger:
gerrit:
- event: ref-updated
ref: ^refs/tags/[0-9]+(\.[0-9]+)*(a|b|rc)[0-9]+$
success:
mysql:
failure:
smtp:
from: zuul@openstack.org
to: release-job-failures@lists.openstack.org
subject: 'Pre-release of {change.project} for ref {change.ref} failed'
mysql:
- pipeline:
name: release
description: When a commit is tagged as a release, this pipeline runs jobs that publish archives and documentation.
manager: independent
precedence: high
post-review: True
trigger:
gerrit:
- event: ref-updated
ref: ^refs/tags/[0-9]+(\.[0-9]+)*$
success:
mysql:
failure:
smtp:
from: zuul@openstack.org
to: release-job-failures@lists.openstack.org
subject: 'Release of {change.project} for ref {change.ref} failed'
mysql:
- pipeline:
name: periodic
post-review: true
description: Jobs in this queue are triggered on a daily timer.
manager: independent
precedence: low
trigger:
timer:
- time: '0 6 * * *'
success:
mysql:
failure:
mysql:
- pipeline:
name: deploy
description: |
This pipeline runs jobs that operate after each change is merged
in order to run production deployment playbooks.
success-message: Build succeeded (deploy pipeline).
failure-message: |
Build failed (deploy pipeline). For information on how to proceed, see
https://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing
manager: serial
precedence: high
post-review: True
trigger:
gerrit:
- event: change-merged
success:
gerrit: {}
mysql:
failure:
gerrit: {}
mysql:
- pipeline:
name: opendev-prod-hourly
post-review: true
description: |
Temporary home for some OpenDev prod jobs that need to be
triggered frequently. Should not be used by anyone other than
OpenDev admins.
manager: independent
precedence: low
trigger:
timer:
# Run with a 2 minute jitter
- time: '0 * * * * * 120'
success:
mysql:
failure:
mysql:
- pipeline:
name: periodic-weekly
post-review: true
description: Jobs in this queue are triggered on a weekly timer.
manager: independent
precedence: low
trigger:
timer:
# Saturday 8am UTC is a better time to start weekend jobs, as Sunday
# is a working day in some geographies.
- time: '0 8 * * 6'
success:
mysql:
failure:
mysql:
- pipeline:
name: release-approval
description: |
Newly-reviewed release requests enter this pipeline to check if the
current state can represent PTL or release liaison approval.
manager: independent
precedence: low
require:
gerrit:
open: True
current-patchset: True
trigger:
gerrit:
- event: patchset-created
- event: comment-added
username: ^(?!^zuul$)\S+$
success:
gerrit:
PTL-Approved: 1
comment: false
mysql:
failure:
gerrit:
PTL-Approved: 0
comment: false
mysql:
- pipeline:
name: release-post
# NOTE(mordred): release-post needs access to credentials (eg: pypi).
post-review: true
description: This pipeline runs release-process-critical jobs that operate after specific changes are merged.
manager: independent
precedence: high
trigger:
gerrit:
- event: ref-updated
ref: ^refs/heads/.*$
success:
mysql:
failure:
mysql:
smtp:
from: zuul@openstack.org
to: release-job-failures@lists.openstack.org
subject: 'release-post job for {change.project} for ref {change.ref} failed'
- pipeline:
name: tag
post-review: true
description: This pipeline runs jobs in response to any tag event.
manager: independent
precedence: high
trigger:
gerrit:
- event: ref-updated
ref: ^refs/tags/.*$
success:
mysql:
failure:
mysql:
smtp:
from: zuul@openstack.org
to: release-job-failures@lists.openstack.org
subject: 'Tag of {change.project} for ref {change.ref} failed'
- pipeline:
name: periodic-stable
post-review: true
description: Periodic checks of the stable branches.
manager: independent
precedence: low
trigger:
timer:
- time: '1 6 * * *'
success:
mysql:
failure:
mysql:
smtp:
from: zuul@openstack.org
to: openstack-stable-maint@lists.openstack.org
subject: 'Stable check of {change.project} for ref {change.ref} failed'
- pipeline:
name: experimental
description: On-demand pipeline for requesting a run against a set of jobs that are not yet gating. Leave review comment of "check experimental" to run jobs in this pipeline.
success-message: Build succeeded (experimental pipeline).
failure-message: Build failed (experimental pipeline).
manager: independent
precedence: low
trigger:
gerrit:
- event: comment-added
comment: (?i)^(Patch Set [0-9]+:)?( [\w\\+-]*)*(\n\n)?\s*check experimental\s*$
success:
gerrit: {}
mysql:
failure:
gerrit: {}
mysql:
- pipeline:
name: merge-check
description: >
Each time a change merges, this pipeline verifies that all open changes
on the same project are still mergeable.
failure-message: Build failed (merge-check pipeline).
manager: independent
ignore-dependencies: true
precedence: low
trigger: {}
- pipeline:
name: third-party-check
description: |
Newly uploaded patchsets to projects that are not hosted on OpenDev
enter this pipeline to receive an initial +/-1 Verified vote.
success-message: Build succeeded (third-party-check pipeline).
# TODO(mordred) We should write a document for non-OpenDev developers
failure-message: |
Build failed (third-party-check pipeline) integration testing on
OpenDev. For information on how to proceed, see
https://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing
manager: independent
precedence: low
trigger:
github:
- event: pull_request
action:
- opened
- changed
- reopened
- event: pull_request
action: comment
comment: (?i)^\s*recheck\s*$
start:
github:
status: pending
comment: false
success:
github:
status: 'success'
mysql:
failure:
github:
status: 'failure'
mysql:
# Don't report merge-failures to github
merge-failure:
mysql:
# NOTE(ianw) 2019-12 : since we have very limited ARM64 resources, we
# have a separate pipeline so ARM64 jobs can start and queue gerrit
# changes automatically but don't hold up the main check pipeline. Of
# course, if we have more resources we can remove this and move jobs
# back into the regular check/gate.
- pipeline:
name: check-arm64
description: Pipeline for ARM64 based jobs.
success-message: Build succeeded (ARM64 pipeline).
failure-message: Build failed (ARM64 pipeline).
manager: independent
precedence: low
require:
gerrit:
open: True
current-patchset: True
trigger:
gerrit:
- event: patchset-created
- event: change-restored
- event: comment-added
comment: (?i)^(Patch Set [0-9]+:)?( [\w\\+-]*)*(\n\n)?\s*recheck
success:
gerrit: {}
mysql:
failure:
gerrit: {}
mysql: