infra-docs-fpo/modules/release_guide/pages/sop_release_container_base_image.adoc
Samyak Jain e11c1191e1 [release-guide] Use attributes for release versions instead of hardcoded values.
Signed-off-by: Samyak Jain <samyak.jn11@gmail.com>
2023-03-14 10:36:39 +05:30

79 lines
2.8 KiB
Text

include::_partials/attributes.adoc[]
== Release the Fedora Container Base Image
=== Description
This SOP covers the steps involved in changing and releasing the Fedora
Container Base image.
Fedora releases 2 container base images, [.title-ref]#fedora# and
[.title-ref]#fedora-minimal#. These images are available on 3 registries
[.title-ref]#registry.fedoraproject.org#, [.title-ref]#quay.io# and
[.title-ref]#DockerHub# (fedora-minimal is not available in DockerHub).
==== Modify a base image (Kickstart)
Base images are built in koji using the [.title-ref]#image-factory#
application to build the container image root filesystem (rootfs).
Kickstart files are used to configure how the image is built and what is
available in the image The solution consist of 3 Kickstarts.
https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-common.ks[fedora-container-common]
https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-base.ks[fedora-container-base]
https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-base-minimal.ks[fedora-container-base-minimal]
Changes made on the rawhide branch will results in the rawhide image,
other branches (f{current}, f{old_release}) should be used to modify other releases.
==== Compose Configuration (Pungi)
The configuration used to compose the container images is available in
the pungi-fedora repository.
For rawhide the configuration is in
https://pagure.io/pungi-fedora/blob/main/f/fedora.conf
While for other releases the configuration is in a dedicated file
https://pagure.io/pungi-fedora/blob/f31/f/fedora-container.conf
==== Release on registry.fedoraproject.org and quay.io
If you want to release the base image on registry.fp.o and quay.io you
can use the following script.
https://pagure.io/releng/blob/main/f/scripts/sync-latest-container-base-image.sh[sync-latest-container-base-image.sh]
You will need to run that script from on of the releng composer machines
in the infrastructure in order to have the credentials.
If you do not have access to that machines, you can request the release
by opening a ticket on the https://pagure.io/releng/issues[releng
tracker].
The script can then be executed as follow
[source,subs="attributes+"]
....
$./sync-latest-container-base-image.sh {current}
$./sync-latest-container-base-image.sh {branched}
....
This will take care of pushing the [.title-ref]#fedora# and
[.title-ref]#fedora-minimal# images to both registries.
==== Release on DockerHub
Releasing on DockerHub is a little different since Fedora is an
"offical" image there. In order to release new images there we have to
update a Dockerfile and rootfs tarball on the following repo.
https://github.com/fedora-cloud/docker-brew-fedora[docker-brew-fedora].
For the details on how to run the script please see
https://github.com/fedora-cloud/docker-brew-fedora/blob/main/README.md[README].