File: inside_release.doc

package info (click to toggle)
simgrid 4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 39,192 kB
  • sloc: cpp: 124,913; ansic: 66,744; python: 8,560; java: 6,773; fortran: 6,079; f90: 5,123; xml: 4,587; sh: 2,194; perl: 1,436; makefile: 111; lisp: 49; javascript: 7; sed: 6
file content (132 lines) | stat: -rw-r--r-- 6,669 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*!
@page inside_release Releasing SimGrid

@section inside_release_c Releasing the main library

@subsection inside_release_c_preconditions Before releasing

Please apply the following checklist before releasing.

- Sources
  - The external patches (Debian, etc) are integrated.
    The COPYING file is aligned with Debian's copyright file, and the
    dates of SimGrid chunks are accurate.
- ChangeLog file
  - All changes are documented
  - The release date is indicated below the changes
  - The release dub name matches the one given in NEWS file
- NEWS
  - The most notable changes of the version are documented
  - The release date is indicated right below the version name
  - The release dub name matches the one given in ChangeLog file
- Release notes in the documentation
  - The content of the future mail is part of the documentation, since
    we won't send mails once gforge is definitly turned off.
  - The date of the release is marked in the title
- Tests
  - The "make distcheck" target works (tested by jenkins)
  - All tests pass on everything on ci
  - Tutorials and derivative projects build correctly
    https://framagit.org/simgrid/simgrid-template-s4u/pipelines
    https://framagit.org/simgrid/external-projects-ci/pipelines
  - The python module builds (see below).

@subsection inside_release_c_releasing Actually releasing SimGrid

- Update the version number in:
  - ChangeLog header
  - CMakeLists.txt (in macros SIMGRID_VERSION_*)
  - sonar-project.properties
  - docs/source/conf.py
  - setup.py
- Commit and push to both framagit and github
- Wait for jenkins/osX to complete the build
- If it's not successful, fix it and push again
- Once it's successful everywhere: merge 'master' into 'stable' and push it to framagit
  - You can interrupt the build on jenkins, as it was tested just before
  - This builds the tar.gz artefact.

- Download the simgrid-doc-4.X.Y (artefact of pipeline 'pages' on framagit)
  Download the tgz file (artefact of the pipeline 'stable' on framagit)
- Tag the git repository v4.XX.X and push it to framagit and ghub
- Document the tag on framagit and ghub
  - Upload the files simgrid-4.XX.tar.gz and simgrid-doc-4_XX.zip
  - Add a link to the version of the ChangeLog that comes with this tag.
    https://framagit.org/simgrid/simgrid/-/blob/v4.0/ChangeLog
- Update the website
  - emacs org/org-templates/level-0.org to change the release version and the tgz link.
  - jed .gitlab-ci.yml
    - Change the link to the simgrid-doc-3_XX.zip file
    - Only keep 2 old versions so that people don't find older ones in google
    - Change the link to latest
  - git commit -a && git push # Check that the pipeline goes well on framagit

- Rebuild and upload the python package
  - Download the simgrid-*.tar.gz artefact from a build-pip job on gitlab CI
  - (alternatively, build it locally) rm -rf dist/ ; python3 -m build --outdir dist/
  - Upload it to pypi (WARNING: you cannot modify uploaded files, ever)
    twine upload dist/simgrid-*.tar.gz # User and token should be located in ~/.pypirc

@subsection inside_release_c_publishing Publishing the release if it's a stable one (3.XX not 3.XX.Y)

- Announce the release
 - Mail the https://sympa.inria.fr/sympa/review/simgrid-community mailing list
    - the NEWS chunk in the mail;
    - Hall of Fame in the mail
      git shortlog -se v3.29..
    - Link to the ChangeLog on framagit (the version of that tag)
 - Also mail some other lists (G5K users)
- Release the debian package
  - rm -f ../simgrid_4.*.orig.tar.xz
  - uscan # download the new version
  - gbp import-orig ../simgrid_4.*.orig.tar.xz
  - dch -i "New upstream release" # + copy the NEWS into debian/changelog
  - git mv debian/libsimgrid4.XX.install debian/libsimgrid4.XY.install
  - edit debian/libsimgrid4.XY.install and debian/control: s/simgrid3.XX/simgrid4.XY/
- Update the simgrid/package.py for spack: https://gitlab.inria.fr/solverstack/spack-repo
- Push the stable branch to github to rebuild and push the stable Docker images
  - It downloads the latest tag on framagit, but sometimes gets out of synch.
    Make sure that it's really the latest stable, as it sometimes rebuilds the previous release.
    If this happens, just rerun the docker-stable action. Nothing should get hurt by the rebuild.
  - Doing the same manually: cd tools/docker && make stable && make tuto-s4u tuto-smpi
    (tuto-mc is not based on simgrid/stable but rebuilds from the git)
  - Once the new images are built, trigger a rebuild of the simgrid-template-{s4u,smpi} repositories on framagit
- Add the new simgrid/stable image to the .gitlab-ci.yml of:
  - https://framagit.org/simgrid/simgrid-template-s4u/
  - https://framagit.org/simgrid/simgrid-template-smpi/

@subsection inside_release_c_postrelease Post-release cleanups

- Create the template for the next release in ChangeLog NEWS Release_Notes.rst files
  Release Target date: https://en.wikipedia.org/wiki/Equinox
- Bump release number to 4.X.1 in CMakeLists.txt sonar-project.properties docs/source/conf.py setup.py
- Deal with deprecations:
  - jed include/xbt/base.h: Introduce the next XBT_ATTRIB_DEPRECATED_v??? macro
  - jed docs/source/Doxyfile: ask doxygen to ignore the new XBT_ATTRIB_DEPRECATED_v??? macro
  - Kill the one for the current release and remove all code that were
    mandated by the deprecated functions (both in source and headers).
  - Do the possible cleanups now that these features are gone.
- Regenerate the unstable docker with this new version

Release numbering semantic:
  - 3.X is a named release.
    - We have 4 named releases per year (for each equinox and solstice)
    - The ChangeLog and NEWS are complete and informative
    - All tests pass on all ci systems (or the workarounds are documented)
    - We provide and store a source .tar.gz on framagit
    - Deprecated symbols remain usable for at least 3 named releases (~1 year)
    - These releases are announced to the users
  - 3.X.Y where Y is even: dot release of 3.X, prerelease of 3.(X+1)
    - We provide and store a source .tar.gz on framagit
    - These releases are NOT announced publicly, nor really documented.
      The idea is to have something close to a rolling release.
    - External projects can depend on dot releases to loosen their
      release process from ours, when 4 release a year is not enough
  - 3.X.Y where Y is odd: git current status between two releases
    - No expectations on such versions
  - Example
    - 3.22.4: unannounced/loosely documented stable release
    - 3.22.5: git status somewhere between the release of 3.22.4 and the next one
    - 3.23: Documented and announced stable release

*/