# 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 approval: - Workflow: 1 require: approval: - Verified: [-1, -2] username: zuul github: - event: pull_request action: - opened - changed - reopened - event: pull_request action: comment comment: (?i)^\s*recheck\s*$ - event: check_run start: github: check: 'in_progress' comment: false success: gerrit: # Note that gerrit keywords are case-sensitive. Verified: 1 github: check: 'success' comment: false failure: gerrit: Verified: -1 github: check: 'failure' comment: false - 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/latest/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 failure: gerrit: Verified: -2 window-floor: 20 window-increase-factor: 2 - pipeline: name: post-review description: | Patches received initial review by project trusted members enter this pipeline to execute additional jobs. This pipeline can be used to access secrets before gating. success-message: Build succeeded (post-review pipeline). failure-message: | Build failed (post-review pipeline). For information on how to proceed, see https://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing manager: independent post-review: True precedence: low require: gerrit: open: True current-patchset: True approval: - Allow-Post-Review: [1] trigger: gerrit: - event: comment-added approval: - Allow-Post-Review: 1 failure: gerrit: {} success: gerrit: {} # Require all changes enqueued to this pipeline originate from Gerrit # including those used as depends on. This ensures the requirement defined # above is always set. allow-other-connections: false - 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/.*$ - 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: {} failure: gerrit: {} - 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]+$ failure: smtp: from: zuul@openstack.org to: release-job-failures@lists.openstack.org subject: 'Pre-release of {change.project} for ref {change.ref} failed' - 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]+)*$ failure: smtp: from: zuul@openstack.org to: release-job-failures@lists.openstack.org subject: 'Release of {change.project} for ref {change.ref} failed' - 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 2 * * *' - 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: {} failure: gerrit: {} - 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' - 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. # 5 is Saturday in apscheduler - time: '0 8 * * 5' - 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: regex: ^zuul$ negate: true success: gerrit: PTL-Approved: 1 comment: false failure: gerrit: PTL-Approved: 0 comment: false - 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/.*$ failure: 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/.*$ failure: 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 2 * * *' failure: 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: {} failure: gerrit: {} - 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*$ - event: check_run start: github: check: 'in_progress' comment: false success: github: check: 'success' comment: false failure: github: check: 'failure' comment: false # Don't report merge-conflicts to github merge-conflict: {} # 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|check arm64) success: gerrit: {} failure: gerrit: {}