From d81ebc5f039824c09b35bc2582706023d3b1ec50 Mon Sep 17 00:00:00 2001 From: Dan Mick Date: Tue, 1 Apr 2025 12:08:45 -0700 Subject: [PATCH] doc/dev/release-process.rst: document new Jenkins job for containers The manual instructions for building release containers were complex and required access to an arm64 host; that was just too much, so I've created a Jenkins job to build all of the prerelease artifacts (see https://github.com/ceph/ceph-build/pull/2342). Change the documentation to reflect that. Signed-off-by: Dan Mick (cherry picked from commit e20c09aab190c98995ccd7e7686e9100397081b6) --- doc/dev/release-process.rst | 87 +++++++------------------------------ 1 file changed, 16 insertions(+), 71 deletions(-) diff --git a/doc/dev/release-process.rst b/doc/dev/release-process.rst index 42d2b50669d..952e1f323ed 100644 --- a/doc/dev/release-process.rst +++ b/doc/dev/release-process.rst @@ -225,86 +225,31 @@ the container, release builds do not, because the build does not sign the packages. Thus, release builds do not build the containers. This must be done after :ref:`Signing and Publishing the Build`. -Architecture-specific containers are built first, and pushed to -quay.ceph.io/ceph/prerelease-{amd64,arm64}. Note: this must be done on -both architectures. - -#. Use a host with a relatively-recent version of podman and skopeo available. - CentOS/RHEL/Fedora usually have later versions than Ubuntu, but Ubuntu 22.04 - or later are probably ok. - -#. Copy and run this shell wrapper for building a container (in container/ is - assumed below, to invoke ``./build.sh``), replacing the values in ``<>`` as - appropriate: - - .. code-block:: bash - - #!/bin/bash - set -xa - - CI_CONTAINER=false - VERSION=19.2.1 - FLAVOR=default - BRANCH=squid - ARCH=x86_64 - CEPH_SHA1=58a7fab8be0a062d730ad7da874972fd3fba59fb - CONTAINER_REPO_HOSTNAME=quay.ceph.io - CONTAINER_REPO_ORGANIZATION=ceph - CONTAINER_REPO_USERNAME= - CONTAINER_REPO_PASSWORD= - PRERELEASE_USERNAME= - PRERELEASE_PASSWORD= - unset NO_PUSH - ./build.sh | tee build.sh.log - -#. Verify that the container images exist on - ``quay.ceph.io/ceph/prerelease-amd64`` and - ``quay.ceph.io/ceph/prerelease-arm64``. - -#. The prerelease manifest-list container, which refers to both arch-specific - containers, is built by using the command ``make-manifest-list.py`` in - ``ceph.git:src/container/make-manifest-list.py``. Note that you must be - logged into the appropriate container repos for any of these manipulations: - ``quay.ceph.io`` for fetching prerelease arch-specific containers and - pushing the prerelease manifest-list container, and ``quay.io`` for - promoting the prerelease containers to released containers. +A Jenkins job named ceph-release-containers exists so that we can +test the images before release. The job exists both for convenience and +because it requires access to both x86_64 and arm64 builders. Start the +job manually on the Jenkins server. This job: - .. prompt:: bash - - cd /container - ./make-manifest-list.py - - Reasonable defaults are set for all inputs, but environment variables can be - used to override the following: - - * ``ARCH_SPECIFIC_HOST`` (default 'quay.ceph.io'): host of prerelease repos - * ``AMD64_REPO`` (default 'ceph/prerelease-amd64') prerelease amd64 repo - * ``ARM64_REPO`` (default 'ceph/prerelease-arm64') prerelease arm64 repo +* builds the architecture-specific container imagess and pushes them to + quay.ceph.io/ceph/prerelease-amd64 and + quay.ceph.io/ceph/prerelease-arm64 - (prerelease arch-specific containers will be copied from here) +* fuses the architecture-specific images together into a 'manifest-list' + or 'fat' container image and pushes it to quay.ceph.io/ceph/prerelease - * ``MANIFEST_HOST`` (default 'quay.ceph.io') prerelease manifest-list host - * ``MANIFEST_REPO`` (default 'ceph/prerelease') prerelease manifest-list - repo - - (prerelease manifest-list containers will be placed here) - -#. Finally, when all appropriate testing and verification is done on the - container images, you can use ``make-manifest-list.py`` to promote them to - their final release location on ``quay.io/ceph/ceph`` (again, be sure you're - logged into ``quay.io/ceph`` with appropriate permissions): +Finally, when all appropriate testing and verification is done on the +container images, run ``make-manifest-list.py --promote`` from the ceph +source tree (at ``container/make-manifest-list.py``) to promote them to +their final release location on ``quay.io/ceph/ceph`` (you must ensure +you're logged into ``quay.io/ceph`` with appropriate permissions): .. prompt:: bash cd /src/container ./make-manifest-list.py --promote - Two more environment variables can override the default destination for - promotion (the source of the prerelease container to be promoted is as - above, in ``MANIFEST_HOST/REPO``): - - * ``RELEASE_MANIFEST_HOST`` (default 'quay.io') release host - * ``RELEASE_MANIFEST_REPO`` (default 'ceph/ceph') release repo +The --promote step should only be performed as the final step in releasing +containers, when the container images have been tested to be good. 6. Announce the Release -- 2.39.5