Skip to content

Commit 83ed9ee

Browse files
authored
Merge pull request ceph#61688 from dmick/wip-ceph-release-docs
doc/dev/release-process.rst: release builds cannot build containers
2 parents e80e73c + 8abba8b commit 83ed9ee

File tree

1 file changed

+72
-32
lines changed

1 file changed

+72
-32
lines changed

doc/dev/release-process.rst

Lines changed: 72 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,14 @@ Packages take hours to build. Use those hours to create the Release Notes and An
131131

132132
See `the Ceph Tracker wiki page that explains how to write the release notes <https://tracker.ceph.com/projects/ceph-releases/wiki/HOWTO_write_the_release_notes>`_.
133133

134+
.. _Signing and Publishing the Build:
135+
134136
4. Signing and Publishing the Build
135137
===================================
136138

137139
#. Obtain the sha1 of the version commit from the `build job <https://jenkins.ceph.com/view/all/job/ceph>`_ or the ``sha1`` file created by the `ceph-setup <https://jenkins.ceph.com/job/ceph-setup/>`_ job.
138140

139-
#. Download the packages from chacra.ceph.com to the signing virtual machine. These packages get downloaded to ``/opt/repos`` where the `Sepia Lab Long Running (Ceph) Cluster <https://wiki.sepia.ceph.com/doku.php?id=services:longrunningcluster>`_ is mounted. Note: this step will also run a command to transfer the
140-
source tarballs from chacra.ceph.com to download.ceph.com directly, by
141-
ssh'ing to download.ceph.com and running /home/signer/bin/get-tarballs.sh.
141+
#. Download the packages from chacra.ceph.com to the signing virtual machine. These packages get downloaded to ``/opt/repos`` where the `Sepia Lab Long Running (Ceph) Cluster <https://wiki.sepia.ceph.com/doku.php?id=services:longrunningcluster>`_ is mounted. Note: this step will also run a command to transfer the source tarballs from chacra.ceph.com to download.ceph.com directly, by ssh'ing to download.ceph.com and running /home/signer/bin/get-tarballs.sh.
142142

143143
.. prompt:: bash $
144144

@@ -206,7 +206,7 @@ ssh'ing to download.ceph.com and running /home/signer/bin/get-tarballs.sh.
206206

207207
etc...
208208

209-
5. Publish the packages to download.ceph.com:
209+
#. Publish the packages to download.ceph.com:
210210

211211
.. prompt:: bash $
212212

@@ -223,51 +223,91 @@ mv the directories and the tarballs from the prerelease home
223223
5. Build Containers
224224
===================
225225

226-
Architecture-specific containers are built during the ceph build and
227-
pushed to quay.ceph.io/ceph/prerelease-{amd64,arm64}, containing the
228-
packages built in that ceph build. The prerelease 'fat' container,
229-
or manifest-list container, that refers to both arch-specific containers,
230-
is built by hand using the command "make-manifest-list.py" in
231-
ceph.git:src/container/make-manifest-list.py. Note that you must
232-
be logged into the appropriate container repos for any of these
233-
manipulations: quay.ceph.io for fetching prerelease arch-specific
234-
containers and pushing the prerelease manifest-list container, and
235-
quay.io for promoting the prerelease containers to released containers.
226+
Unlike CI builds, which have access to packages in the correct form for
227+
the container, release builds do not, because the build does not
228+
sign the packages. Thus, release builds do not build the containers.
229+
This must be done after :ref:`Signing and Publishing the Build`.
230+
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.
236274

237275
.. prompt:: bash
238276

239-
cd <ceph-checkout>/src/container
277+
cd <ceph-checkout>/container
240278
./make-manifest-list.py
241279

242-
Reasonable defaults are set for all inputs, but environment variables
243-
can be used to override:
280+
Reasonable defaults are set for all inputs, but environment variables can be
281+
used to override the following:
244282

245-
* ARCH_SPECIFIC_HOST (default 'quay.ceph.io'): host of prerelease repos
246-
* AMD64_REPO (default 'ceph/prerelease-amd64') prerelease amd64 repo
247-
* ARM64_REPO (default 'ceph/prerelease-arm64') prerelease arm64 repo
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
248286

249-
(prerelease arch-specific containers will be copied from here)
287+
(prerelease arch-specific containers will be copied from here)
250288

251-
* MANIFEST_HOST (default 'quay.ceph.io') prerelease manifest-list host
252-
* MANIFEST_REPO (default 'ceph/prerelease') prerelease manifest-list repo
289+
* ``MANIFEST_HOST`` (default 'quay.ceph.io') prerelease manifest-list host
290+
* ``MANIFEST_REPO`` (default 'ceph/prerelease') prerelease manifest-list
291+
repo
253292

254-
(prerelease manifest-list containers will be placed here)
293+
(prerelease manifest-list containers will be placed here)
255294

256-
Finally, when all appropriate testing/ verification is done on the
257-
container images, you can use make-manifest-list.py to promote them to
258-
their final release location on quay.io/ceph/ceph:
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):
259299

260300
.. prompt:: bash
261301

262302
cd <ceph-checkout>/src/container
263303
./make-manifest-list.py --promote
264304

265-
Two more environment variables can override the default destination for
266-
promotion (the source of the prerelease container to be promoted is
267-
as above, in MANIFEST_HOST/REPO):
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``):
268308

269-
* RELEASE_MANIFEST_HOST (default 'quay.io') release host
270-
* RELEASE_MANIFEST_REPO (default 'ceph/ceph') release repo
309+
* ``RELEASE_MANIFEST_HOST`` (default 'quay.io') release host
310+
* ``RELEASE_MANIFEST_REPO`` (default 'ceph/ceph') release repo
271311

272312

273313
6. Announce the Release

0 commit comments

Comments
 (0)