kopia lustrzana https://github.com/collective/icalendar
168 wiersze
5.9 KiB
ReStructuredText
168 wiersze
5.9 KiB
ReStructuredText
Maintenance
|
|
===========
|
|
|
|
The goal of this section is to make sure that the ``icalendar`` library receives a
|
|
clear maintenance structure with it that is transparent.
|
|
|
|
icalendar Maintainers
|
|
---------------------
|
|
|
|
Currently the maintainers are the following people.
|
|
|
|
- `@geier <https://github.com/geier>`_
|
|
- `@jacadzaca <https://github.com/jacadzaca>`_
|
|
- `@niccokunzmann <https://github.com/niccokunzmann>`_
|
|
|
|
Maintainers need the following.
|
|
|
|
- ``Admin`` access to the `repository <https://github.com/collective/icalendar>`_.
|
|
These can be enabled by a current maintainer or an GitHub organisation administrator
|
|
in the `settings <https://github.com/collective/icalendar/settings/access>`_.
|
|
- ``Maintainer`` or ``Owner`` access to the `PyPI project <https://pypi.org/project/icalendar/>`_.
|
|
The new maintainer needs a PyPI account for this with Two Factor Authentication (2FA) enabled
|
|
because ``icalendar`` is a critical project on PyPI.
|
|
The access can be given in the `collaboration Section <https://pypi.org/manage/project/icalendar/collaboration/>`_ on PyPI.
|
|
- ``Maintainer`` access to the `Read The Docs project <https://readthedocs.org/projects/icalendar/>`_.
|
|
This can be given by existing maintainers listed on the project's page.
|
|
TODO: link to the settings
|
|
- ``PyPI environment access for GitHub Actions`` grant new releases from tags.
|
|
This access can be granted in `Settings → Environments → PyPI <https://github.com/collective/icalendar/settings/environments/674266024/edit>`__
|
|
by adding the GitHub username to the list of "Required Reviewers".
|
|
|
|
|
|
Collaborators
|
|
-------------
|
|
|
|
Collaborators are people with write access to the repository.
|
|
As a collaborator, you can
|
|
|
|
- merge Pull Requests,
|
|
- initiate a new release, see below.
|
|
|
|
We want to have as many knowledgeable people with write access taking responsibility as possible for these reasons:
|
|
|
|
- a constant flow of fixes and new features
|
|
- better code review
|
|
- lower bus factor and backup
|
|
- future maintainers
|
|
|
|
Nobody should merge their own pull requests.
|
|
If you like to review or merge pull requests of other people and you have shown that you know how to contribute,
|
|
you can ask for becoming a collaborator or a maintainer asks you if you would like to become one.
|
|
|
|
New Releases
|
|
------------
|
|
|
|
This explains how to create a new release on `PyPI <https://pypi.org/project/icalendar/>`_.
|
|
|
|
Since collaborators and maintainers have write access the the repository, they can start the release process.
|
|
However, only people with ``PyPI environment access for GitHub Actions`` can approve an automated release to PyPI.
|
|
|
|
|
|
1. Check that the ``CHANGES.rst`` is up to date with the `latest merged pull requests <https://github.com/collective/icalendar/pulls?q=is%3Apr+is%3Amerged>`__
|
|
and the version you want to release is correctly named.
|
|
|
|
.. code-block:: bash
|
|
|
|
export VERSION=6.3.0
|
|
|
|
2. Create a commit on the ``release`` branch (or equivalent) to release this version.
|
|
|
|
.. code-block:: bash
|
|
|
|
git checkout main
|
|
git pull
|
|
git checkout -b release main
|
|
git add CHANGES.rst
|
|
git commit -m"version $VERSION"
|
|
|
|
3. Push the commit and `create a pull request <https://github.com/collective/icalendar/compare?expand=1>`__
|
|
Here is an `example pull request #457 <https://github.com/collective/icalendar/pull/457>`__.
|
|
|
|
.. code-block:: bash
|
|
|
|
git push -u origin release
|
|
|
|
4. See if the `CI-tests <https://github.com/collective/icalendar/actions>`_ are running on the pull request.
|
|
If they are not running, no new release can be issued.
|
|
If the tests are running, merge the pull request.
|
|
5. Clean up behind you!
|
|
|
|
.. code-block:: bash
|
|
|
|
git checkout main
|
|
git pull
|
|
git branch -d release
|
|
git push -d origin release
|
|
|
|
6. Create a tag for the release and see if the `CI-tests`_ are running.
|
|
|
|
.. code-block:: bash
|
|
|
|
git checkout main
|
|
git pull
|
|
git tag "v$VERSION"
|
|
git push upstream "v$VERSION" # could be origin or whatever reference
|
|
|
|
7. Once the tag is pushed and its `CI-tests`_ are passing, maintainers will get an e-mail::
|
|
|
|
Subject: Deployment review in collective/icalendar
|
|
|
|
tests: PyPI is waiting for your review
|
|
|
|
8. If the release is approved by a maintainer. It will be pushed to `PyPI`_.
|
|
If that happens, notify the issues that were fixed about this release.
|
|
9. Copy this to the start of ``CHANGES.rst``::
|
|
|
|
6.3.1 (unreleased)
|
|
------------------
|
|
|
|
Minor changes:
|
|
|
|
- ...
|
|
|
|
Breaking changes:
|
|
|
|
- ...
|
|
|
|
New features:
|
|
|
|
- ...
|
|
|
|
Bug fixes:
|
|
|
|
- ...
|
|
|
|
10. Push the new CHANGELOG so it is used for future changes.
|
|
|
|
.. code-block:: bash
|
|
|
|
git checkout main
|
|
git pull
|
|
git add CHANGES.rst
|
|
git commit -m"Add new CHANGELOG section for future release
|
|
|
|
See https://icalendar.readthedocs.io/en/latest/maintenance.html#new-releases"
|
|
git push upstream main # could be origin or whatever reference
|
|
|
|
Links
|
|
-----
|
|
|
|
This section contains useful links for maintainers and collaborators:
|
|
|
|
- `Future of icalendar, looking for maintainer #360 <https://github.com/collective/icalendar/discussions/360>`__
|
|
- `Comment on the Plone tests running with icalendar <https://github.com/collective/icalendar/pull/447#issuecomment-1277643634>`__
|
|
|
|
Updating Python Versions
|
|
------------------------
|
|
|
|
When adding support for a new Python version or removing support for an old one, the following files need to be updated:
|
|
|
|
1. ``.github/workflows/tests.yml``: Add or remove the Python version from the test matrix.
|
|
2. ``tox.ini``: Update the ``envlist`` to include or remove the Python version.
|
|
3. ``pyproject.toml``: Update the ``requires-python`` line and the ``classifiers`` list.
|
|
4. ``README.rst``: Update the compatibility information.
|
|
5. ``docs/maintenance.rst``: Update this list if any new files need to be modified.
|
|
|
|
Remember to test the changes thoroughly and update any documentation that mentions supported Python versions.
|