]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
doc/dev/release-process.rst: document new Jenkins job for containers
authorDan Mick <dan.mick@redhat.com>
Tue, 1 Apr 2025 19:08:45 +0000 (12:08 -0700)
committerDan Mick <dan.mick@redhat.com>
Tue, 1 Apr 2025 19:08:45 +0000 (12:08 -0700)
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 <dan.mick@redhat.com>
doc/dev/release-process.rst

index e947233364dc636f126ea819a7f3cc922b738dde..c0f4e9a27c9824f1ebc9b162ba21114489bae183 100644 (file)
@@ -228,86 +228,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=<quay.ceph.io username>
-        CONTAINER_REPO_PASSWORD=<password for above>
-        PRERELEASE_USERNAME=<download.ceph.com prerelease username>
-        PRERELEASE_PASSWORD=<password for above>
-        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 <ceph-checkout>/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 <ceph-checkout>/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