Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Post-release cleanups
[simgrid.git] / doc / doxygen / inside_release.doc
1 /*!
2 @page inside_release Releasing SimGrid
3
4 @section inside_release_c Releasing the main library
5
6 @subsection inside_release_c_preconditions Before releasing
7
8 Please apply the following checklist before releasing.
9
10 - Sources
11   - The external patches (Debian, etc) are integrated.
12     The COPYING file is aligned with Debian's copyright file, and the
13     dates of SimGrid chunks are accurate.
14 - ChangeLog file
15   - All changes are documented
16   - The release date is indicated below the changes
17   - The release dub name matches the one given in NEWS file
18 - NEWS
19   - The most notable changes of the version are documented
20   - The release date is indicated right below the version name
21   - The release dub name matches the one given in ChangeLog file
22 - Release notes in the documentation
23   - The content of the future mail is part of the documentation, since
24     we won't send mails once gforge is definitly turned off.
25   - The date of the release is marked in the title
26 - Tests
27   - The "make distcheck" target works (tested by jenkins)
28   - All tests pass on everything on ci
29   - Tutorials and derivative projects build correctly
30     https://framagit.org/simgrid/simgrid-template-s4u/pipelines
31     https://framagit.org/simgrid/external-projects-ci/pipelines
32   - The python module builds (see below).
33
34 @subsection inside_release_c_releasing Actually releasing SimGrid
35
36 - Update the version number in:
37   - ChangeLog header
38   - CMakeLists.txt (in macros SIMGRID_VERSION_*)
39   - sonar-project.properties
40   - docs/source/conf.py
41   - setup.py
42 - Commit and push to both framagit and github
43 - Wait for jenkins/osX to complete the build
44 - If it's not successful, fix it and push again
45 - Once it's successful everywhere: merge 'master' into 'stable' and push it to framagit
46   - You can interrupt the build on jenkins, as it was tested just before
47   - This builds the tar.gz artefact.
48
49 - Download the simgrid-doc-3.X.Y (artefact of pipeline 'pages' on framagit)
50   Download the tgz file (artefact of the pipeline 'stable' on framagit)
51 - Tag the git repository v3.XX.X and push it to framagit and ghub
52 - Document the tag on framagit and ghub
53   - Upload the files simgrid-3.XX.tar.gz and simgrid-doc-3_XX.zip
54   - Add a link to the version of the ChangeLog that comes with this tag.
55     https://framagit.org/simgrid/simgrid/-/blob/v3.35/ChangeLog
56 - Update the website
57   - emacs org/org-templates/level-0.org to change the release version and the tgz link.
58   - jed .gitlab-ci.yml
59     - Change the link to the simgrid-doc-3_XX.zip file
60     - Only keep 2 old versions so that people don't find older ones in google
61     - Change the link to latest
62   - git commit -a && git push # Check that the pipeline goes well on framagit
63
64 - Rebuild and upload the python package
65   - rm -rf dist/ ; python3 setup.py sdist # Build a source distrib
66   - test that the built distrib recompiles:
67     rm -rf /tmp/pysimgrid && mkdir /tmp/pysimgrid && cp dist/simgrid-*.tar.gz /tmp/pysimgrid
68     (cd /tmp/pysimgrid && tar xfz simgrid*.tar.gz && cd simgrid-*/ && python3 setup.py build)
69   - Upload it to pypi (WARNING: you cannot modify uploaded files, ever)
70     twine upload dist/simgrid-*.tar.gz # User and password should be located in ~/.pypirc
71
72 @subsection inside_release_c_publishing Publishing the release if it's a stable one (3.XX not 3.XX.Y)
73
74 - Announce the release
75  - Mail the https://sympa.inria.fr/sympa/review/simgrid-community mailing list
76     - the NEWS chunk in the mail;
77     - Hall of Fame in the mail
78       git shortlog -se v3.29..
79     - Link to the ChangeLog on framagit (the version of that tag)
80  - Also mail some other lists (G5K users)
81 - Release the debian package
82   - rm -f ../simgrid_3.*.orig.tar.xz
83   - uscan # download the new version
84   - gbp import-orig ../simgrid_3.*.orig.tar.xz
85   - dch -i "New upstream release" # + copy the NEWS into debian/changelog
86   - git mv debian/libsimgrid3.XX.install debian/libsimgrid3.XY.install
87   - edit debian/control: s/simgrid3.XX/simgrid3.XY/
88 - Update the simgrid/package.py for spack: https://gitlab.inria.fr/solverstack/spack-repo
89 - Push the stable branch to github to rebuild and push the stable Docker images
90   - It downloads the latest tag on framagit, but sometimes gets out of synch.
91     Make sure that it's really the latest stable, as it sometimes rebuilds the previous release.
92     If this happens, just rerun the docker-stable action. Nothing should get hurt by the rebuild.
93   - Doing the same manually: cd tools/docker && make stable && make tuto-s4u tuto-smpi
94     (tuto-mc is not based on simgrid/stable but rebuilds from the git)
95   - Once the new images are built, trigger a rebuild of the simgrid-template-{s4u,smpi} repositories on framagit
96 - Add the new simgrid/stable image to the .gitlab-ci.yml of:
97   - https://framagit.org/simgrid/simgrid-template-s4u/
98   - https://framagit.org/simgrid/simgrid-template-smpi/
99
100 @subsection inside_release_c_postrelease Post-release cleanups
101
102 - Create the template for the next release in ChangeLog and NEWS files
103   Release Target date: https://en.wikipedia.org/wiki/Equinox
104 - Bump release number to 3.X.1 in CMakeLists.txt sonar-project.properties docs/source/conf.py setup.py
105 - Deal with deprecations:
106   - jed include/xbt/base.h: Introduce the next XBT_ATTRIB_DEPRECATED_v??? macro
107   - Kill the one for the current release and remove all code that were
108     mandated by the deprecated functions (both in source and headers).
109   - Do the possible cleanups now that these features are gone.
110 - Regenerate the unstable docker with this new version
111
112 Release numbering semantic:
113   - 3.X is a named release.
114     - We have 4 named releases per year (for each equinox and solstice)
115     - The ChangeLog and NEWS are complete and informative
116     - All tests pass on all ci systems (or the workarounds are documented)
117     - We provide and store a source .tar.gz on framagit
118     - Deprecated symbols remain usable for at least 3 named releases (~1 year)
119     - These releases are announced to the users
120   - 3.X.Y where Y is even: dot release of 3.X, prerelease of 3.(X+1)
121     - We provide and store a source .tar.gz on framagit
122     - These releases are NOT announced publicly, nor really documented.
123       The idea is to have something close to a rolling release.
124     - External projects can depend on dot releases to loosen their
125       release process from ours, when 4 release a year is not enough
126   - 3.X.Y where Y is odd: git current status between two releases
127     - No expectations on such versions
128   - Example
129     - 3.22.4: unannounced/loosely documented stable release
130     - 3.22.5: git status somewhere between the release of 3.22.4 and the next one
131     - 3.23: Documented and announced stable release
132
133
134 */