... |
... |
@@ -1234,6 +1234,8 @@ This will give you a ``doc/build/html`` directory with the html docs which |
1234
|
1234
|
you can view in your browser locally to test.
|
1235
|
1235
|
|
1236
|
1236
|
|
|
1237
|
+.. _contributing_session_html:
|
|
1238
|
+
|
1237
|
1239
|
Regenerating session html
|
1238
|
1240
|
'''''''''''''''''''''''''
|
1239
|
1241
|
The documentation build will build the session files if they are missing,
|
... |
... |
@@ -1252,6 +1254,8 @@ To force rebuild session html while building the doc, simply run `tox` with the |
1252
|
1254
|
env BST_FORCE_SESSION_REBUILD=1 tox -e docs
|
1253
|
1255
|
|
1254
|
1256
|
|
|
1257
|
+.. _contributing_man_pages:
|
|
1258
|
+
|
1255
|
1259
|
Man pages
|
1256
|
1260
|
~~~~~~~~~
|
1257
|
1261
|
Unfortunately it is quite difficult to integrate the man pages build
|
... |
... |
@@ -1779,3 +1783,257 @@ changing the ``.in`` file, run the following to update the matching ``.txt`` |
1779
|
1783
|
file::
|
1780
|
1784
|
|
1781
|
1785
|
make -C requirements
|
|
1786
|
+
|
|
1787
|
+
|
|
1788
|
+Making releases
|
|
1789
|
+---------------
|
|
1790
|
+This is a checklist of activities which must be observed when creating
|
|
1791
|
+BuildStream releases, it is important to keep this section up to date
|
|
1792
|
+whenever the release process changes.
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+Requirements
|
|
1796
|
+~~~~~~~~~~~~
|
|
1797
|
+There are a couple of requirements and accounts required in order
|
|
1798
|
+to publish a release.
|
|
1799
|
+
|
|
1800
|
+* Ability to send email to ``buildstream-list gnome org`` and
|
|
1801
|
+ to ``gnome-announce-list gnome org``.
|
|
1802
|
+
|
|
1803
|
+* Shell account at ``master.gnome.org``.
|
|
1804
|
+
|
|
1805
|
+* Access to the `BuildStream project on PyPI <https://pypi.org/project/BuildStream/>`_
|
|
1806
|
+
|
|
1807
|
+* An email client which still knows how to send emails in plain text.
|
|
1808
|
+
|
|
1809
|
+
|
|
1810
|
+Pre-release changes
|
|
1811
|
+~~~~~~~~~~~~~~~~~~~
|
|
1812
|
+Before actually rolling the release, here is a list of changes which
|
|
1813
|
+might need to be done in preparation of the release.
|
|
1814
|
+
|
|
1815
|
+* Ensure that the man pages are up to date
|
|
1816
|
+
|
|
1817
|
+ The man pages are committed to the repository because we are
|
|
1818
|
+ currently unable to integrate this generation into the setuptools
|
|
1819
|
+ build phase, as outlined in issue #8.
|
|
1820
|
+
|
|
1821
|
+ If any of the user facing CLI has changed, or if any of the
|
|
1822
|
+ related docstrings have changed, then you should
|
|
1823
|
+ :ref:`regenerate the man pages <contributing_man_pages>` and
|
|
1824
|
+ add/commit the results before wrapping a release.
|
|
1825
|
+
|
|
1826
|
+* Ensure the documentation session HTML is up to date
|
|
1827
|
+
|
|
1828
|
+ The session HTML files are committed to the repository for multiple
|
|
1829
|
+ reasons, one of them being that the documentation must be buildable
|
|
1830
|
+ from within a release build environment so that downstream distribution
|
|
1831
|
+ packagers can easily create the docs package.
|
|
1832
|
+
|
|
1833
|
+ This is currently only needed for the first stable release
|
|
1834
|
+ in a stable line of releases, after this point the API is frozen
|
|
1835
|
+ and will not change for the remainder of the stable release lifetime,
|
|
1836
|
+ so nothing interesting will have changed in these session files.
|
|
1837
|
+
|
|
1838
|
+ If regeneration is needed, follow :ref:`the instructions above <contributing_session_html>`.
|
|
1839
|
+
|
|
1840
|
+* Ensure the NEWS entry is up to date and ready
|
|
1841
|
+
|
|
1842
|
+ For a stable release where features have not been added, we
|
|
1843
|
+ should at least add some entries about the issues which have
|
|
1844
|
+ been fixed since the last stable release.
|
|
1845
|
+
|
|
1846
|
+ For development releases, it is worthwhile going over the
|
|
1847
|
+ existing entries and ensuring all the major feature additions
|
|
1848
|
+ are mentioned and there are no redundancies.
|
|
1849
|
+
|
|
1850
|
+* Push pre-release changes
|
|
1851
|
+
|
|
1852
|
+ Now that any final pre-release changes to generated files or NEWS have
|
|
1853
|
+ been made, push these directly to the upstream repository.
|
|
1854
|
+
|
|
1855
|
+ Do not sit around waiting for CI or approval, these superficial changes
|
|
1856
|
+ do not affect CI and you are intended to push these changes directly
|
|
1857
|
+ to the upstream repository.
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+Release process
|
|
1861
|
+~~~~~~~~~~~~~~~
|
|
1862
|
+
|
|
1863
|
+* Ensure that the latest commit is passing in CI
|
|
1864
|
+
|
|
1865
|
+ Of course, we do not release software which does not pass it's own
|
|
1866
|
+ tests.
|
|
1867
|
+
|
|
1868
|
+* Get the list of contributors
|
|
1869
|
+
|
|
1870
|
+ The list of contributors for a given list is a list of
|
|
1871
|
+ any contributors who have landed any patches since the
|
|
1872
|
+ last release.
|
|
1873
|
+
|
|
1874
|
+ An easy way to get this list is to ask git to summarize
|
|
1875
|
+ the authors of commits since the *last release tag*. For
|
|
1876
|
+ example, if we are about to create the ``1.1.1`` release, then
|
|
1877
|
+ we need to observe all of the commits since the ``1.1.0``
|
|
1878
|
+ release:
|
|
1879
|
+
|
|
1880
|
+ .. code:: shell
|
|
1881
|
+
|
|
1882
|
+ git shortlog -s 1.1.0...@
|
|
1883
|
+
|
|
1884
|
+ At times, the same contributor might make contributions from different
|
|
1885
|
+ machines which they have setup their author names differently, you
|
|
1886
|
+ can see that some of the authors are actually duplicates, then
|
|
1887
|
+ remove the duplicates.
|
|
1888
|
+
|
|
1889
|
+* Start composing the release announcement email
|
|
1890
|
+
|
|
1891
|
+ The first thing to do when composing the release email is to
|
|
1892
|
+ ensure your mail client has disabled any HTML formatting and will
|
|
1893
|
+ safely use plain text only.
|
|
1894
|
+
|
|
1895
|
+ Try to make the release announcement consistent with other release
|
|
1896
|
+ announcements as much as possible, an example of the email
|
|
1897
|
+ can be `found here <https://mail.gnome.org/archives/buildstream-list/2019-February/msg00039.html>`_.
|
|
1898
|
+
|
|
1899
|
+ The recipients of the email are ``buildstream-list gnome org`` and
|
|
1900
|
+ ``gnome-announce-list gnome org`` and the title of the email should
|
|
1901
|
+ be of the form: ``BuildStream 1.1.1 released``, without any exclamation point.
|
|
1902
|
+
|
|
1903
|
+ The format of the email is essentially::
|
|
1904
|
+
|
|
1905
|
+ Hi all,
|
|
1906
|
+
|
|
1907
|
+ This is the personalized message written to you about this
|
|
1908
|
+ release.
|
|
1909
|
+
|
|
1910
|
+ If this is an unstable release, this should include a warning
|
|
1911
|
+ to this effect and an invitation to users to please help us
|
|
1912
|
+ test this release.
|
|
1913
|
+
|
|
1914
|
+ This is also a good place to highlight specific bug fixes which
|
|
1915
|
+ users may have been waiting for, or highlight a new feature we
|
|
1916
|
+ want users to try out.
|
|
1917
|
+
|
|
1918
|
+
|
|
1919
|
+ What is BuildStream ?
|
|
1920
|
+ =====================
|
|
1921
|
+ This is a concise blurb which describes BuildStream in a couple of
|
|
1922
|
+ sentences, and is taken from the the README.rst.
|
|
1923
|
+
|
|
1924
|
+ The easiest thing is to just copy this over from the last release email.
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+ =================
|
|
1928
|
+ buildstream 1.1.1
|
|
1929
|
+ =================
|
|
1930
|
+ This section is directly copy pasted from the top of the NEWS file
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+ Contributors
|
|
1934
|
+ ============
|
|
1935
|
+ - This is Where
|
|
1936
|
+ - You Put
|
|
1937
|
+ - The Contributor
|
|
1938
|
+ - Names Which
|
|
1939
|
+ - You Extracted
|
|
1940
|
+ - Using git shortlog -s
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+ Where can I get it ?
|
|
1944
|
+ ====================
|
|
1945
|
+ https://download.gnome.org/sources/BuildStream/1.1/
|
|
1946
|
+
|
|
1947
|
+ For more information on the BuildStream project, visit our home page
|
|
1948
|
+ at https://buildstream.build/
|
|
1949
|
+
|
|
1950
|
+* Publish the release tag
|
|
1951
|
+
|
|
1952
|
+ Now that any pre-release changes are upstream, create and push the
|
|
1953
|
+ signed release tag like so:
|
|
1954
|
+
|
|
1955
|
+ .. code:: shell
|
|
1956
|
+
|
|
1957
|
+ git tag -s 1.1.1
|
|
1958
|
+ git push origin 1.1.1
|
|
1959
|
+
|
|
1960
|
+* Upload the release tarball
|
|
1961
|
+
|
|
1962
|
+ First get yourself into a clean repository state, ensure that you
|
|
1963
|
+ don't have any unfinished work or precious, uncommitted files lying
|
|
1964
|
+ around in your checkout and then run:
|
|
1965
|
+
|
|
1966
|
+ .. code:: shell
|
|
1967
|
+
|
|
1968
|
+ git clean -xdff
|
|
1969
|
+
|
|
1970
|
+ Create the tarball with the following command:
|
|
1971
|
+
|
|
1972
|
+ .. code:: shell
|
|
1973
|
+
|
|
1974
|
+ python3 setup.py sdist
|
|
1975
|
+
|
|
1976
|
+ And upload the resulting tarball to the master GNOME server:
|
|
1977
|
+
|
|
1978
|
+ .. code:: shell
|
|
1979
|
+
|
|
1980
|
+ scp dist/BuildStream-1.1.1.tar.gz <user>@master.gnome.org:
|
|
1981
|
+
|
|
1982
|
+ And finally login to your account at ``master.gnome.org`` and run
|
|
1983
|
+ the install scripts to publish the tarball and update the mirrors:
|
|
1984
|
+
|
|
1985
|
+ .. code:: shell
|
|
1986
|
+
|
|
1987
|
+ ftpadmin install BuildStream-1.1.1.tar.gz
|
|
1988
|
+
|
|
1989
|
+* Send the release email
|
|
1990
|
+
|
|
1991
|
+ Now that the release tag is up and the tarball is published,
|
|
1992
|
+ you can send the release email.
|
|
1993
|
+
|
|
1994
|
+
|
|
1995
|
+Post-release activities
|
|
1996
|
+~~~~~~~~~~~~~~~~~~~~~~~
|
|
1997
|
+Once the release has been published, there are some activities
|
|
1998
|
+which need to be done to ensure everything is up to date.
|
|
1999
|
+
|
|
2000
|
+* If this is a stable release, then the tarball should also be
|
|
2001
|
+ uploaded to PyPI.
|
|
2002
|
+
|
|
2003
|
+ Make sure you have ``twine`` installed and upload the tarball
|
|
2004
|
+ like so:
|
|
2005
|
+
|
|
2006
|
+ .. code:: shell
|
|
2007
|
+
|
|
2008
|
+ pip3 install --user twine
|
|
2009
|
+ twine upload -r pypi dist/BuildStream-1.0.1.tar.gz
|
|
2010
|
+
|
|
2011
|
+* Update the topic line in the #buildstream IRC channel if needed
|
|
2012
|
+
|
|
2013
|
+ The IRC channel usually advertizes the latest stable release
|
|
2014
|
+ in the topic line, now is the right time to update it.
|
|
2015
|
+
|
|
2016
|
+* Update the website repository
|
|
2017
|
+
|
|
2018
|
+ The website wants to link to release announcements, but this
|
|
2019
|
+ cannot be automated because we cannot guess what the link to
|
|
2020
|
+ the release email will be in the mailing list archive.
|
|
2021
|
+
|
|
2022
|
+ Find the URL to the announcement you just published
|
|
2023
|
+ `in the mailing list archives <https://mail.gnome.org/archives/buildstream-list/>`_,
|
|
2024
|
+ and use that URL to update the ``anouncements.json`` file in the website
|
|
2025
|
+ repository.
|
|
2026
|
+
|
|
2027
|
+ Commit and push this change to the the ``anouncements.json`` file to
|
|
2028
|
+ the upstream website repository, and gitlab will take care of automatically
|
|
2029
|
+ updating the website accordingly.
|
|
2030
|
+
|
|
2031
|
+* Regenerate BuildStream documentation
|
|
2032
|
+
|
|
2033
|
+ In order to update the badges we use in various documentation
|
|
2034
|
+ which reflects what is the latest stable releases and the latest
|
|
2035
|
+ development snapshots, we simply need to ensure a pipeline runs
|
|
2036
|
+ for the master branch in the BuildStream repository.
|
|
2037
|
+
|
|
2038
|
+ You can do this by using the "Run Pipeline" feature on the
|
|
2039
|
+ `pipelines page in the gitlab UI <https://gitlab.com/BuildStream/buildstream/pipelines>`_.
|