-
-
Notifications
You must be signed in to change notification settings - Fork 724
ReleaseProcess
This page describes how releases of ReactPHP's individual components are handled. As such, this information mostly applies to ReactPHP's component maintainers instead of their users (consumers).
We're putting this information out here in order to maintain a transparent process and achieve consistent results.
ReactPHP used to consist of a core repository containing all evented core components. These components were also exported via a subtree split script into individual read-only repositories. This approach worked out good at the start but soon after turned out to be hard to maintain.
Nowadays, each component lives in its own, individual repository. This also means each components has its own code base, maintainers, PRs, issues, tags and ultimately release cycle.
This applies when tagging a new release.
- make sure milestone on GitHub has all issues closed (otherwise delay release or move issues to other milestone as appropriate)
- close milestone on GitHub
- make sure
CHANGELOG.md
is complete- each item should have ticket number for reference and author for attribution noted
- You can optionally use this simple script to format all PRs attached to a milestone: https://gist.github.com/clue/a0aa77ec6f364ee8e6412613a6c27ebf
- set
CHANGELOG.md
release date in stone
- If applicable, update
README.md
to include new release tag $ git commit
-
$ git tag -a vX.Y.Z
(annotated git tag) $ git push origin master vX.Y.Z
- Draft a new release on GitHub and select the pushed tag, then copy-paste the section from the
CHANGELOG.md
to description and publish the release - Trigger website rebuild via GitHub actions so release shows up online instantly (context: https://github.com/reactphp/website/pull/53)
- Create new discussion in the Announcements category with the section from
CHANGELOG.md
as description, make sure to link every PR (example: https://github.com/orgs/reactphp/discussions/467) - Send out a tweet from the ReactPHP Twitter account containing a screenshot of the GitHub release changelog, a link to the GitHub release and some context what the release is about (example: https://twitter.com/reactphp/status/1567860543116951557)
- After sending out a tweet, the reactphp-bot will automatically create a new post in the ReactPHP Gitter channel containing the tweet information
The release process currently involves a lot of manual steps, which can be quite time consuming and thus leaves room for improvements. There are already plans to use more automation in the future, any input is welcome.
This applies when creating a new component.
- Create GitHub repository in the reactphp organization (create repository "reactphp/foo")
- Create new team with the same name as the component (create new team named "foo")
- Assign push access for team to Github repository (team "foo" can push to "reactphp/foo")
- Add individual maintainers to team (add user "bar" to team "foo")
- Set up services:
- Packagist
- Travis CI
- GitHub IRC hook
- Check the following files:
composer.json
phpunit.xml
.travis.yml
LICENSE
README.md
CHANGELOG.md