This is the PR that introduced pipefail to the downstream ironic-image, which is not yet accepted in the upstream:
This is the line that's failing:
This is the image base that OpenShift uses for ironic-image (before rewriting in ci-operator):
Here is where the relevant environment variables are set in the builder images for OCP:
Here is the final FROM line in the OKD image build (just stream8):
This results in the following differences between the two images:
$ podman run --rm -it --entrypoint bash quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:519ac06836d972047f311de5e57914cf842716e22a1d916a771f02499e0f235c -c 'env | grep ^OS_'
$ podman run --rm -it --entrypoint bash quay.io/openshift/okd-content@sha256:6b8401f8d84c4838cf0e7c598b126fdd920b6391c07c9409b1f2f17be6d6d5cb -c 'env | grep ^OS_'
Here is what the OS_ prefixed variables should be used for:
It's worth noting that ironic.extra is not consumed anywhere, and is simply being used here to save off the variables that Oslo _might_ be consuming (it won't consume the variables that are present in the OCP builder image, though they do get caught by this regex).
With pipefail set, grep returns non-zero when it fails to find an environment variable that matches the regex, as in the case of the OKD ironic-image builds.