rebooting this conversation... see inline at the bottom
On Mon, Mar 25, 2019 at 11:29 AM Javier Pena <jpena(a)redhat.com> wrote:
------------------------------
On Fri, Mar 22, 2019 at 8:35 PM Javier Pena <jpena(a)redhat.com> wrote:
>
>
> ----- Original Message -----
> > I've been working with mjturek and baha on this a bit. I've responded
> inline
> > below, but also want to clarify on the desired workflow.
> >
> > TL;DR: The desired workflow is to have ppc64le and x86_64 seamlessly
> > integrated and uploaded. This can be done with docker manifest list
> images.
> >
> > The following link explains in greater detail:
> >
https://docs.docker.com/registry/spec/manifest-v2-2/
> >
> > The process boils down to the following steps:
> >
> > 1) Upload an image of the first architecture (ex:
> image1:x86_64_01012019)
> > 2) Upload an image of the second architecture (ex:
> image1:ppc64le_01012019)
> > 3) Upload manifest list image of the image (ex: image1:01012019)
> >
>
> This is one of the details where I had my doubts. Currently, the images
> uploaded to the registry use the following naming convention:
>
>
>
tripleomaster/centos-binary-neutron-l3-agent:42a882962919b867c91a182b83acca6d8004096e_ee467b40
>
>
> Where:
>
> - tripleomaster is associated to the release (we have tripleomaster,
> tripleostein, tripleorocky...)
> - centos is associated to the OS (we have centos and fedora)
> - 42a882962919b867c91a182b83acca6d8004096e_ee467b40 refers to the
> repository in
trunk.rdoproject.org used to build the image (commit hash
> and short distro hash)
>
> If we want to go multi-arch, we need to change that tag to include the
> architecture, is this correct? Otherwise, we could have conflicts between
> the x86_64 and ppc64le pipelines trying to upload the same image.
>
Yup. The idea is that the enpoint URL
(tripleomaster/centos-binary-neutron-l3-agent:42a882962919b867c91a182b83acca6d8004096e_ee467b40)
is a container manifest. Where we include the arch would be with an
additional tag:
tripleomaster/centos-binary-neutron-l3-agent:42a882962919b867c91a182b83acca6d8004096e_ee467b40_$arch
but nothing else should change and *explicitly* do not want different orgs
per architecture. So the publish pipeline would look like:
- Each architecture builds and publishes all the containers per branch
and OS [1] all the containers and publishes a container image/layer to:
'tripleo%(branch)s/%(os)s-%(build_type)s-%(container)s:%(repo)s_%(arch)s'
- Then checks to see if the manifest exists.
manifest =
'tripleo%(branch)s/%(os)s-%(build_type)s-%(container)s:%(repo)s'
if exists(manifest):
add_to_manifest(arch_layer=tripleo%(branch)s/%(os)s-%(build_type)s-%(container)s:%(repo)s_%(arch)s')
else:
create_manifest(arch_layer=tripleo%(branch)s/%(os)s-%(build_type)s-%(container)s:%(repo)s_%(arch)s')
I have been running some tests to check how this could work, and I've
found an issue. It looks like the OpenShift Registry (what we use for our
RDO Registry) does not properly support manifest lists, see [2]. It
actually failed for me when I tried it, while a plain Docker registry
worked (using manifest-tool).
Would the manifest upload be required in the RDO Registry (which is used
as an intermediate step), or just in DockerHub (which is used for actual
content delivery)? If it's the second case, we're still fine.
Regards,
Javier
[2] -
https://trello.com/c/4EcAIJrd/1303-5-quayregistry-add-support-for-manifes...
This shouldn't break existing consumers as docker and podman both do the
correct thing when encountering a manifest. and does mean that multi-arch
consumers can use the same URL scheme. This is how downstream currently
works
It's possible and possibly even desirable, due to resource constraints,
for the ppc64le build to be triggered only when updating
current-passed-ci. That's exactly what we discussed in Dublin.
Tony.
[1] for ppc64le we're starting with centos and master but over time this
would need to grow out from master to include stein, u etc etc We haven't
looked at Fedora due to using centos CI but if Fedora is going to stick
around we can work on that too.
_______________________________________________
dev mailing list
dev(a)lists.rdoproject.org
http://lists.rdoproject.org/mailman/listinfo/dev
To unsubscribe: dev-unsubscribe(a)lists.rdoproject.org
OK... so here we are.
Trevor, myself and Steve hashed out a PPC64LE workflow that works alongside
the x86_64 workflow.
Our notes are here [1] .
Although x86_64 and PPC64LE should try their best to use the same container
build methods and process the workflows are completely independent and can
remain that way. The convergence occurs on the tripleo-ci promotion
server after reading test results from the dlrn_api ( notes in the etherpad
)
Some additional points.
* Alan Pevec and I both agree getting the PPC hooked into a zuul workflow
would benefit everyone
OK... comment away and feel free to comment / update the etherpad.
[1]