Add a dispatch job to the image promote pipeline

This dispatch job determines which image build jobs ran in gate
for a particular change and then filters the resulting job list
so that we don't attempt to promote images that were not built.

To simplify things, it relies on string substitution to match
the build and promote jobs.  Since we're doing that, lets simplify
the promote jobs themselves to rely on the same substitution.

Change-Id: I6548b1a25f8bf7c943ba1fbfd41b6f01dba9b726
This commit is contained in:
James E. Blair
2025-06-04 12:07:50 -07:00
parent 544769f2b8
commit 571f86b6d0
4 changed files with 40 additions and 13 deletions
@@ -0,0 +1,8 @@
- name: "Query Zuul API for artifact information for {{ child_job }}"
uri:
url: "{{ promote_artifact_api }}/builds?{{ promote_artifact_query }}"
register: builds
- name: "Include job for {{ child_job }}"
when: "(builds.json | length)"
set_fact:
ret_child_jobs: "{{ ret_child_jobs + [ child_job ] }}"
@@ -0,0 +1,16 @@
- name: Dispatch promote jobs
hosts: localhost
vars:
promote_artifact_query: "change={{ zuul.change }}&patchset={{ zuul.patchset }}&pipeline={{ promote_artifact_pipeline }}&job_name={{ build_artifact_job }}"
ret_child_jobs: []
tasks:
- name: Process job
include_tasks: dispatch-inner.yaml
with_items: "{{ zuul.child_jobs }}"
loop_control:
loop_var: child_job
- name: Return child job list to Zuul
zuul_return:
data:
zuul:
child_jobs: "{{ ret_child_jobs }}"
+15 -13
View File
@@ -58,6 +58,18 @@
DIB_SHOW_IMAGE_USAGE: '1'
ZUUL_USER_SSH_PUBLIC_KEY: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDh5u0DWNi0d3uqI82izAxVTUTrGl36L3szEqV9WrilGmxaTtp9X7HrktJ5J+rvxQqz39llTf1v7iYA4CNKto/48RBAB0mKEEI4x4iw+fu/BLU7nu7ewSfXLUxHahxaTgIk2KcbegknD5NzMjalyfNfgTPDGv8BjwHeeNdZmJMBvPFGu6fO48M4yK1tiQn0kAkaH4oII/M4pyF8vy9tPTODAD7RvnMvQAb08LZZvE/IPzJAHNXFRb1v+DBa38fOvdyaz/nibrsxiOWZxQVLgjYciUeDy1xvXADaWlqvxmLy+90LHbJFbGxK4AN0mWfwBiUMVyxZjkun39pjTNl2k09OhOq+R52UqnehMc4eBdZCddnCUq4/efbFCJkqe5wY+SE8fYybJjauUL64zyrwf6yfWkXvPVHWa9Y+NCmvH8PCBUcsQnwO7l/Yb4N+8+u6zkODyuc9wLAY+DpnptE3plXtvUs5negC4fvJSnOHpWXuoi9yzp7IlPf6fSjMMDQo0JjCYJwazdzqrIH2VSCcfHAqWF0ECR8IgwZV1bp0xFe0UN0Gjsgkozqf8rvs1AYyTSeD19Wg9j+crTke8E1sfoI/qFzHwzBQFKJ+2l0cs7pZWJBARlhbt1j1IouS2aH+74xwsavRhBz4IsFTPqWiP6JTrgk5cgKRnTqInzNfdaLeUw== zuul-worker@openstack.org"
- job:
name: opendev-dispatch-promote-diskimage
description: |
Decide which diskimage promotion jobs should run
run: playbooks/opendev-promote-diskimage/dispatch.yaml
nodeset:
nodes: []
vars:
promote_artifact_api: "https://zuul.opendev.org/api/tenant/{{ zuul.tenant }}"
promote_artifact_pipeline: gate
build_artifact_job: "{{ child_job | regex_replace('^opendev-promote', 'opendev-build') }}"
- job:
name: opendev-promote-diskimage-base
description: |
@@ -70,6 +82,9 @@
promote_artifact_api: "https://zuul.opendev.org/api/tenant/{{ zuul.tenant }}"
promote_artifact_pipeline: gate
promote_artifact_type: zuul_image
promote_artifact_job: "{{ zuul.job | regex_replace('^opendev-promote', 'opendev-build') }}"
dependencies:
- opendev-dispatch-promote-diskimage
- job:
name: opendev-build-diskimage-base-debuntu
@@ -111,7 +126,6 @@
- job:
name: opendev-promote-diskimage-centos-9-stream
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-centos-9-stream }
- job:
name: opendev-build-diskimage-centos-9-stream-arm64
@@ -129,7 +143,6 @@
- job:
name: opendev-promote-diskimage-centos-9-stream-arm64
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-centos-9-stream-arm64 }
- job:
name: opendev-build-diskimage-rockylinux-8
@@ -149,7 +162,6 @@
- job:
name: opendev-promote-diskimage-rockylinux-8
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-rockylinux-8 }
- job:
name: opendev-build-diskimage-rockylinux-9
@@ -169,7 +181,6 @@
- job:
name: opendev-promote-diskimage-rockylinux-9
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-rockylinux-9 }
- job:
name: opendev-build-diskimage-rockylinux-9-arm64
@@ -187,7 +198,6 @@
- job:
name: opendev-promote-diskimage-rockylinux-9-arm64
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-rockylinux-9-arm64 }
- job:
name: opendev-build-diskimage-debian-bookworm
@@ -210,7 +220,6 @@
- job:
name: opendev-promote-diskimage-debian-bookworm
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-debian-bookworm }
- job:
name: opendev-build-diskimage-debian-bookworm-arm64
@@ -228,7 +237,6 @@
- job:
name: opendev-promote-diskimage-debian-bookworm-arm64
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-debian-bookworm-arm64 }
- job:
name: opendev-build-diskimage-debian-bullseye
@@ -251,7 +259,6 @@
- job:
name: opendev-promote-diskimage-debian-bullseye
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-debian-bullseye }
- job:
name: opendev-build-diskimage-debian-bullseye-arm64
@@ -269,7 +276,6 @@
- job:
name: opendev-promote-diskimage-debian-bullseye-arm64
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-debian-bullseye-arm64 }
- job:
name: opendev-build-diskimage-ubuntu-jammy
@@ -310,7 +316,6 @@
- job:
name: opendev-promote-diskimage-ubuntu-jammy
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-ubuntu-jammy }
- job:
name: opendev-build-diskimage-ubuntu-jammy-arm64
@@ -330,7 +335,6 @@
- job:
name: opendev-promote-diskimage-ubuntu-jammy-arm64
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-ubuntu-jammy-arm64 }
- job:
name: opendev-build-diskimage-ubuntu-noble
@@ -352,7 +356,6 @@
- job:
name: opendev-promote-diskimage-ubuntu-noble
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-ubuntu-noble }
- job:
name: opendev-build-diskimage-ubuntu-noble-arm64
@@ -372,4 +375,3 @@
- job:
name: opendev-promote-diskimage-ubuntu-noble-arm64
parent: opendev-promote-diskimage-base
vars: { promote_artifact_job: opendev-build-diskimage-ubuntu-noble-arm64 }
+1
View File
@@ -204,6 +204,7 @@
pass-to-parent: true
promote-image-build:
jobs:
- opendev-dispatch-promote-diskimage
- opendev-promote-diskimage-centos-9-stream
- opendev-promote-diskimage-centos-9-stream-arm64
- opendev-promote-diskimage-debian-bookworm