wheel builds : move to individual releases

The publish jobs build and copy the wheels to the AFS r/w partitions,
but they are not released to the mirrors until a final "vos release"
of their volume.

Previously this happened in a final job that would not trigger if any
of the wheel builds failed.  This has meant thing like out-of-sync
centos mirrors or arm64 node failures have stopped all wheel
publishing previously.  There's really no need to block other
platforms publishing if one of these jobs fails.

This converts the jobs to have a release job syncrhonized by a
semaphore.  We don't want many "vos release" processes running all at
once, as it has been a source of failure with openafs before.  Since
releasing requires the admin key, we keep it in a separate job from
the building.

Change-Id: I10c307c2d46c0e5b86732943208c3167da28a694
This commit is contained in:
Ian Wienand 2023-04-12 08:48:04 +10:00 committed by Dr. Jens Harbott
parent fb423d10ca
commit 47d99524c5
3 changed files with 194 additions and 90 deletions

View File

@ -2,50 +2,7 @@
roles: roles:
- role: create-afs-token - role: create-afs-token
# CentOS
- role: release-afs-volume - role: release-afs-volume
afs_volume: mirror.wheel.cent7x64 afs_volume: '{{ wheel_volume }}'
# CentOS 8 Stream
- role: release-afs-volume
afs_volume: mirror.wheel.cent8sx64
- role: release-afs-volume
afs_volume: mirror.wheel.cent8sa64
# CentOS 9 Stream
- role: release-afs-volume
afs_volume: mirror.wheel.cent9sx64
- role: release-afs-volume
afs_volume: mirror.wheel.cent9sa64
# Debian
- role: release-afs-volume
afs_volume: mirror.wheel.busterx64
- role: release-afs-volume
afs_volume: mirror.wheel.bustera64
- role: release-afs-volume
afs_volume: mirror.wheel.deb11x64
- role: release-afs-volume
afs_volume: mirror.wheel.deb11a64
# Ubuntu
- role: release-afs-volume
afs_volume: mirror.wheel.xenialx64
- role: release-afs-volume
afs_volume: mirror.wheel.bionicx64
- role: release-afs-volume
afs_volume: mirror.wheel.bionica64
- role: release-afs-volume
afs_volume: mirror.wheel.focalx64
- role: release-afs-volume
afs_volume: mirror.wheel.focala64
- role: release-afs-volume
afs_volume: mirror.wheel.jammyx64
- role: release-afs-volume
afs_volume: mirror.wheel.jammya64
# Fin
- role: destroy-afs-token - role: destroy-afs-token

View File

@ -853,6 +853,27 @@
run: playbooks/proposal/propose-project-config-update.yaml run: playbooks/proposal/propose-project-config-update.yaml
protected: true protected: true
# The wheel builds can finish at similar times, so to avoid many
# overlapping "vos release" processes we restrict it with a semaphore.
- semaphore:
name: wheel-release
max: 1
- job:
name: release-wheel-cache
abstract: true
protected: true
description: |
Release a wheel cache volume
run:
- name: playbooks/release/wheel.yaml
semaphores: wheel-release
nodeset:
nodes: []
secrets:
- name: afs
secret: afsadmin_keytab
- job: - job:
name: publish-wheel-cache-centos-7 name: publish-wheel-cache-centos-7
description: | description: |
@ -867,6 +888,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-centos-7
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.cent7x64'
- job: - job:
name: publish-wheel-cache-centos-8-stream name: publish-wheel-cache-centos-8-stream
description: | description: |
@ -881,6 +909,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-centos-8-stream
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.cent8x64'
- job: - job:
name: publish-wheel-cache-centos-8-stream-arm64 name: publish-wheel-cache-centos-8-stream-arm64
description: | description: |
@ -895,6 +930,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-centos-8-stream-arm64
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.cent8a64'
- job: - job:
name: publish-wheel-cache-centos-9-stream name: publish-wheel-cache-centos-9-stream
description: | description: |
@ -909,6 +951,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-centos-9-stream
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.cent9sx64'
- job: - job:
name: publish-wheel-cache-centos-9-stream-arm64 name: publish-wheel-cache-centos-9-stream-arm64
description: | description: |
@ -923,6 +972,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-centos-9-stream-arm64
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.cent9sx64'
- job: - job:
name: publish-wheel-cache-debian-bullseye name: publish-wheel-cache-debian-bullseye
description: | description: |
@ -937,6 +993,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-debian-bullseye
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.deb11x64'
- job: - job:
name: publish-wheel-cache-debian-bullseye-arm64 name: publish-wheel-cache-debian-bullseye-arm64
description: | description: |
@ -951,6 +1014,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-debian-bullseye-arm64
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.deb11a64'
- job: - job:
name: publish-wheel-cache-debian-buster name: publish-wheel-cache-debian-buster
description: | description: |
@ -965,6 +1035,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-debian-buster
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.busterx64'
- job: - job:
name: publish-wheel-cache-debian-buster-arm64 name: publish-wheel-cache-debian-buster-arm64
description: | description: |
@ -979,6 +1056,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-debian-buster-arm64
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.bustera64'
- job: - job:
name: publish-wheel-cache-ubuntu-jammy name: publish-wheel-cache-ubuntu-jammy
parent: build-wheel-cache-ubuntu-jammy parent: build-wheel-cache-ubuntu-jammy
@ -993,6 +1077,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-ubuntu-jammy
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.jammyx64'
- job: - job:
name: publish-wheel-cache-ubuntu-jammy-arm64 name: publish-wheel-cache-ubuntu-jammy-arm64
parent: build-wheel-cache-ubuntu-jammy-arm64 parent: build-wheel-cache-ubuntu-jammy-arm64
@ -1007,6 +1098,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-ubuntu-jammy-arm64
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.jammya64'
- job: - job:
name: publish-wheel-cache-ubuntu-focal name: publish-wheel-cache-ubuntu-focal
parent: build-wheel-cache-ubuntu-focal parent: build-wheel-cache-ubuntu-focal
@ -1021,6 +1119,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-ubuntu-focal
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.focalx64'
- job: - job:
name: publish-wheel-cache-ubuntu-focal-arm64 name: publish-wheel-cache-ubuntu-focal-arm64
parent: build-wheel-cache-ubuntu-focal-arm64 parent: build-wheel-cache-ubuntu-focal-arm64
@ -1035,6 +1140,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-ubuntu-focal-arm64
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.focala64'
- job: - job:
name: publish-wheel-cache-ubuntu-bionic name: publish-wheel-cache-ubuntu-bionic
parent: build-wheel-cache-ubuntu-bionic parent: build-wheel-cache-ubuntu-bionic
@ -1049,6 +1161,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-ubuntu-bionic
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.bionicx64'
- job: - job:
name: publish-wheel-cache-ubuntu-bionic-arm64 name: publish-wheel-cache-ubuntu-bionic-arm64
parent: build-wheel-cache-ubuntu-bionic-arm64 parent: build-wheel-cache-ubuntu-bionic-arm64
@ -1063,6 +1182,13 @@
- name: afs - name: afs
secret: wheel_keytab secret: wheel_keytab
- job:
name: release-wheel-cache-ubuntu-bionic-arm64
parent: release-wheel-cache
final: true
vars:
wheel_volume: 'mirror.wheel.bionica64'
- job: - job:
name: publish-wheel-cache-ubuntu-xenial name: publish-wheel-cache-ubuntu-xenial
parent: build-wheel-cache-ubuntu-xenial parent: build-wheel-cache-ubuntu-xenial
@ -1078,20 +1204,11 @@
secret: wheel_keytab secret: wheel_keytab
- job: - job:
name: release-wheel-cache name: release-wheel-cache-ubuntu-xenial
description: | parent: release-wheel-cache
Release published wheels to OpenStack CI mirrors. final: true
run: playbooks/wheel/release.yaml vars:
nodeset: wheel_volume: 'mirror.wheel.xenialx64'
nodes: []
# Build and publish jobs for the wheel mirror only run against
# master. Restrict the release job to master as well to avoid zuul
# config errors due to stable branches not being able to run their
# job depenendencies.
branches: master
secrets:
- name: afs
secret: afsadmin_keytab
- job: - job:
name: check-release-approval name: check-release-approval

View File

@ -4584,39 +4584,69 @@
periodic: periodic:
jobs: jobs:
- publish-wheel-cache-centos-7 - publish-wheel-cache-centos-7
- publish-wheel-cache-centos-8-stream - release-wheel-cache-centos-7:
- publish-wheel-cache-centos-9-stream
- publish-wheel-cache-debian-bullseye
- publish-wheel-cache-debian-buster
- publish-wheel-cache-ubuntu-jammy
- publish-wheel-cache-ubuntu-focal
- publish-wheel-cache-ubuntu-bionic
- publish-wheel-cache-ubuntu-xenial
- publish-wheel-cache-centos-8-stream-arm64
- publish-wheel-cache-centos-9-stream-arm64
- publish-wheel-cache-debian-bullseye-arm64
- publish-wheel-cache-debian-buster-arm64
- publish-wheel-cache-ubuntu-jammy-arm64
- publish-wheel-cache-ubuntu-focal-arm64
- publish-wheel-cache-ubuntu-bionic-arm64
- release-wheel-cache:
dependencies: dependencies:
- publish-wheel-cache-centos-7 - name: publish-wheel-cache-centos-7
- publish-wheel-cache-centos-8-stream - publish-wheel-cache-centos-8-stream
- release-wheel-cache-centos-8-stream:
dependencies:
- name: publish-wheel-cache-centos-8-stream
- publish-wheel-cache-centos-9-stream - publish-wheel-cache-centos-9-stream
- release-wheel-cache-centos-9-stream:
dependencies:
- name: publish-wheel-cache-centos-9-stream
- publish-wheel-cache-debian-bullseye - publish-wheel-cache-debian-bullseye
- release-wheel-cache-debian-bullseye:
dependencies:
- name: publish-wheel-cache-debian-bullseye
- publish-wheel-cache-debian-buster - publish-wheel-cache-debian-buster
- release-wheel-cache-debian-buster:
dependencies:
- name: publish-wheel-cache-debian-buster
- publish-wheel-cache-ubuntu-jammy - publish-wheel-cache-ubuntu-jammy
- release-wheel-cache-ubuntu-jammy:
dependencies:
- name: publish-wheel-cache-ubuntu-jammy
- publish-wheel-cache-ubuntu-focal - publish-wheel-cache-ubuntu-focal
- release-wheel-cache-ubuntu-focal:
dependencies:
- name: publish-wheel-cache-ubuntu-focal
- publish-wheel-cache-ubuntu-bionic - publish-wheel-cache-ubuntu-bionic
- release-wheel-cache-ubuntu-bionic:
dependencies:
- name: publish-wheel-cache-ubuntu-bionic
- publish-wheel-cache-ubuntu-xenial - publish-wheel-cache-ubuntu-xenial
- release-wheel-cache-ubuntu-xenial:
dependencies:
- name: publish-wheel-cache-ubuntu-xenial
- publish-wheel-cache-centos-8-stream-arm64 - publish-wheel-cache-centos-8-stream-arm64
- release-wheel-cache-centos-8-stream-arm64:
dependencies:
- name: publish-wheel-cache-centos-8-stream-arm64
- publish-wheel-cache-centos-9-stream-arm64 - publish-wheel-cache-centos-9-stream-arm64
- release-wheel-cache-centos-9-stream-arm64:
dependencies:
- name: publish-wheel-cache-centos-9-stream-arm64
- publish-wheel-cache-debian-bullseye-arm64 - publish-wheel-cache-debian-bullseye-arm64
- release-wheel-cache-debian-bullseye-arm64:
dependencies:
- name: publish-wheel-cache-debian-bullseye-arm64
- publish-wheel-cache-debian-buster-arm64 - publish-wheel-cache-debian-buster-arm64
- release-wheel-cache-debian-buster-arm64:
dependencies:
- name: publish-wheel-cache-debian-buster-arm64
- publish-wheel-cache-ubuntu-jammy-arm64 - publish-wheel-cache-ubuntu-jammy-arm64
- release-wheel-cache-ubuntu-jammy-arm64:
dependencies:
- name: publish-wheel-cache-ubuntu-jammy-arm64
- publish-wheel-cache-ubuntu-focal-arm64 - publish-wheel-cache-ubuntu-focal-arm64
- release-wheel-cache-ubuntu-focal-arm64:
dependencies:
- name: publish-wheel-cache-ubuntu-focal-arm64
- publish-wheel-cache-ubuntu-bionic-arm64 - publish-wheel-cache-ubuntu-bionic-arm64
- release-wheel-cache-ubuntu-bionic-arm64:
dependencies:
- name: publish-wheel-cache-ubuntu-bionic-arm64
periodic-weekly: periodic-weekly:
jobs: jobs:
- propose-updates: - propose-updates: