Skip to content

Commit 7262710

Browse files
authored
Merge pull request ceph#62610 from ceph/release-process-container-build
doc/dev/release-process.rst: document new Jenkins job for containers
2 parents 444f865 + e20c09a commit 7262710

File tree

1 file changed

+16
-71
lines changed

1 file changed

+16
-71
lines changed

doc/dev/release-process.rst

Lines changed: 16 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -228,86 +228,31 @@ the container, release builds do not, because the build does not
228228
sign the packages. Thus, release builds do not build the containers.
229229
This must be done after :ref:`Signing and Publishing the Build`.
230230

231-
Architecture-specific containers are built first, and pushed to
232-
quay.ceph.io/ceph/prerelease-{amd64,arm64}. Note: this must be done on
233-
both architectures.
234-
235-
#. Use a host with a relatively-recent version of podman and skopeo available.
236-
CentOS/RHEL/Fedora usually have later versions than Ubuntu, but Ubuntu 22.04
237-
or later are probably ok.
238-
239-
#. Copy and run this shell wrapper for building a container (in container/ is
240-
assumed below, to invoke ``./build.sh``), replacing the values in ``<>`` as
241-
appropriate:
242-
243-
.. code-block:: bash
244-
245-
#!/bin/bash
246-
set -xa
247-
248-
CI_CONTAINER=false
249-
VERSION=19.2.1
250-
FLAVOR=default
251-
BRANCH=squid
252-
ARCH=x86_64
253-
CEPH_SHA1=58a7fab8be0a062d730ad7da874972fd3fba59fb
254-
CONTAINER_REPO_HOSTNAME=quay.ceph.io
255-
CONTAINER_REPO_ORGANIZATION=ceph
256-
CONTAINER_REPO_USERNAME=<quay.ceph.io username>
257-
CONTAINER_REPO_PASSWORD=<password for above>
258-
PRERELEASE_USERNAME=<download.ceph.com prerelease username>
259-
PRERELEASE_PASSWORD=<password for above>
260-
unset NO_PUSH
261-
./build.sh | tee build.sh.log
262-
263-
#. Verify that the container images exist on
264-
``quay.ceph.io/ceph/prerelease-amd64`` and
265-
``quay.ceph.io/ceph/prerelease-arm64``.
266-
267-
#. The prerelease manifest-list container, which refers to both arch-specific
268-
containers, is built by using the command ``make-manifest-list.py`` in
269-
``ceph.git:src/container/make-manifest-list.py``. Note that you must be
270-
logged into the appropriate container repos for any of these manipulations:
271-
``quay.ceph.io`` for fetching prerelease arch-specific containers and
272-
pushing the prerelease manifest-list container, and ``quay.io`` for
273-
promoting the prerelease containers to released containers.
231+
A Jenkins job named ceph-release-containers exists so that we can
232+
test the images before release. The job exists both for convenience and
233+
because it requires access to both x86_64 and arm64 builders. Start the
234+
job manually on the Jenkins server. This job:
274235

275-
.. prompt:: bash
276-
277-
cd <ceph-checkout>/container
278-
./make-manifest-list.py
279-
280-
Reasonable defaults are set for all inputs, but environment variables can be
281-
used to override the following:
282-
283-
* ``ARCH_SPECIFIC_HOST`` (default 'quay.ceph.io'): host of prerelease repos
284-
* ``AMD64_REPO`` (default 'ceph/prerelease-amd64') prerelease amd64 repo
285-
* ``ARM64_REPO`` (default 'ceph/prerelease-arm64') prerelease arm64 repo
236+
* builds the architecture-specific container imagess and pushes them to
237+
quay.ceph.io/ceph/prerelease-amd64 and
238+
quay.ceph.io/ceph/prerelease-arm64
286239

287-
(prerelease arch-specific containers will be copied from here)
240+
* fuses the architecture-specific images together into a 'manifest-list'
241+
or 'fat' container image and pushes it to quay.ceph.io/ceph/prerelease
288242

289-
* ``MANIFEST_HOST`` (default 'quay.ceph.io') prerelease manifest-list host
290-
* ``MANIFEST_REPO`` (default 'ceph/prerelease') prerelease manifest-list
291-
repo
292-
293-
(prerelease manifest-list containers will be placed here)
294-
295-
#. Finally, when all appropriate testing and verification is done on the
296-
container images, you can use ``make-manifest-list.py`` to promote them to
297-
their final release location on ``quay.io/ceph/ceph`` (again, be sure you're
298-
logged into ``quay.io/ceph`` with appropriate permissions):
243+
Finally, when all appropriate testing and verification is done on the
244+
container images, run ``make-manifest-list.py --promote`` from the ceph
245+
source tree (at ``container/make-manifest-list.py``) to promote them to
246+
their final release location on ``quay.io/ceph/ceph`` (you must ensure
247+
you're logged into ``quay.io/ceph`` with appropriate permissions):
299248

300249
.. prompt:: bash
301250

302251
cd <ceph-checkout>/src/container
303252
./make-manifest-list.py --promote
304253

305-
Two more environment variables can override the default destination for
306-
promotion (the source of the prerelease container to be promoted is as
307-
above, in ``MANIFEST_HOST/REPO``):
308-
309-
* ``RELEASE_MANIFEST_HOST`` (default 'quay.io') release host
310-
* ``RELEASE_MANIFEST_REPO`` (default 'ceph/ceph') release repo
254+
The --promote step should only be performed as the final step in releasing
255+
containers, when the container images have been tested to be good.
311256

312257

313258
6. Announce the Release

0 commit comments

Comments
 (0)