Skip to content

Commit ff6df9b

Browse files
authored
Extract releasing process from contributing doc (#1116)
1 parent a980f1d commit ff6df9b

File tree

2 files changed

+234
-229
lines changed

2 files changed

+234
-229
lines changed

CONTRIBUTING.md

Lines changed: 2 additions & 229 deletions
Original file line numberDiff line numberDiff line change
@@ -190,234 +190,7 @@ repository:
190190
informational log messages with the `--level warning` option.
191191
* Generated documentation may be found in the `build/master/html` directory.
192192

193-
## Creating a maintenance branch and updating master branch alias
194-
195-
After releasing a new major or minor version (e.g. 1.9.0), a maintenance branch
196-
(e.g. v1.9) should be created. Any development towards a patch release (e.g.
197-
1.9.1) would then be done within that branch and any development for the next
198-
major or minor release can continue in master.
199-
200-
After creating a maintenance branch, the `extra.branch-alias.dev-master` field
201-
in the master branch's `composer.json` file should be updated. For example,
202-
after branching v1.9, `composer.json` in the master branch may still read:
203-
204-
```
205-
"branch-alias": {
206-
"dev-master": "1.9.x-dev"
207-
}
208-
```
209-
210-
The above would be changed to:
211-
212-
```
213-
"branch-alias": {
214-
"dev-master": "1.10.x-dev"
215-
}
216-
```
217-
218-
Commit this change:
219-
220-
```
221-
$ git commit -m "Master is now 1.10-dev" composer.json
222-
```
223-
224193
## Releasing
225194

226-
The following steps outline the release process for both new minor versions (e.g.
227-
releasing the `master` branch as X.Y.0) and patch versions (e.g. releasing the
228-
`vX.Y` branch as X.Y.Z).
229-
230-
The command examples below assume that the canonical "mongodb" repository has
231-
the remote name "mongodb". You may need to adjust these commands if you've given
232-
the remote another name (e.g. "upstream"). The "origin" remote name was not used
233-
as it likely refers to your personal fork.
234-
235-
It helps to keep your own fork in sync with the "mongodb" repository (i.e. any
236-
branches and tags on the main repository should also exist in your fork). This
237-
is left as an exercise to the reader.
238-
239-
### Ensure PHP version compatibility
240-
241-
Ensure that the library test suite completes on supported versions of PHP.
242-
243-
### Transition JIRA issues and version
244-
245-
All issues associated with the release version should be in the "Closed" state
246-
and have a resolution of "Fixed". Issues with other resolutions (e.g.
247-
"Duplicate", "Works as Designed") should be removed from the release version so
248-
that they do not appear in the release notes.
249-
250-
Check the corresponding ".x" fix version to see if it contains any issues that
251-
are resolved as "Fixed" and should be included in this release version.
252-
253-
Update the version's release date and status from the
254-
[Manage Versions](https://jira.mongodb.org/plugins/servlet/project-config/PHPLIB/versions)
255-
page.
256-
257-
### Update version info
258-
259-
The PHP library uses [semantic versioning](https://semver.org/). Do not break
260-
backwards compatibility in a non-major release or your users will kill you.
261-
262-
Before proceeding, ensure that the `master` branch is up-to-date with all code
263-
changes in this maintenance branch. This is important because we will later
264-
merge the ensuing release commits up to master with `--strategy=ours`, which
265-
will ignore changes from the merged commits.
266-
267-
### Update composer.json and CI matrices
268-
269-
This is especially important before releasing a new minor version.
270-
271-
Ensure that the extension requirement and branch alias in `composer.json` are
272-
correct for the library version being released. For example, the 1.15.0 release
273-
of the library should depend on version `^1.15.0` of the extension and master
274-
branch alias should be `1.15.x-dev`.
275-
276-
If this is the first release of a minor version for the library, it is likely
277-
following an extension release. In that case, the `driver-versions` matrix in
278-
the Evergreen configuration should be updated:
279-
280-
```diff
281-
- id: "oldest-supported"
282-
- display_name: "PHPC 1.15-dev"
283-
+ display_name: "PHPC 1.15.0"
284-
variables:
285-
- EXTENSION_BRANCH: "master"
286-
+ EXTENSION_VERSION: "1.15.0"
287-
- id: "latest-stable"
288-
- display_name: "PHPC 1.15-dev"
289-
+ display_name: "PHPC 1.15.x"
290-
variables:
291-
- EXTENSION_BRANCH: "master"
292-
+ EXTENSION_VERSION: "stable"
293-
- id: "latest-dev"
294-
- display_name: "PHPC 1.15-dev"
295-
+ display_name: "PHPC 1.16-dev"
296-
variables:
297-
EXTENSION_BRANCH: "master"
298-
```
299-
300-
Commit and push any changes:
301-
302-
```
303-
$ git commit -m "Update composer.json and CI matrices for X.Y.Z" composer.json .evergreen/config.yml
304-
$ git push mongodb
305-
```
306-
307-
### Tag the release
308-
309-
Create a tag for the release and push:
310-
311-
```
312-
$ git tag -a -m "Release X.Y.Z" X.Y.Z
313-
$ git push mongodb --tags
314-
```
315-
316-
### Branch management
317-
318-
#### After releasing a new minor version
319-
320-
After a new minor version is released (i.e. `master` was tagged), a maintenance
321-
branch should be created for future patch releases:
322-
323-
```
324-
$ git checkout -b vX.Y
325-
$ git push mongodb vX.Y
326-
```
327-
328-
Update the master branch alias in `composer.json`:
329-
330-
```diff
331-
"extra": {
332-
"branch-alias": {
333-
- "dev-master": "1.15.x-dev"
334-
+ "dev-master": "1.16.x-dev"
335-
}
336-
},
337-
```
338-
339-
Commit and push this change:
340-
341-
```
342-
$ git commit -m "Master is now X.Y-dev" composer.json
343-
$ git push mongodb
344-
```
345-
346-
#### After releasing a patch version
347-
348-
If this was a patch release, the maintenance branch must be merged up to master:
349-
350-
```
351-
$ git checkout master
352-
$ git pull mongodb master
353-
$ git merge vX.Y --strategy=ours
354-
$ git push mongodb
355-
```
356-
357-
The `--strategy=ours` option ensures that all changes from the merged commits
358-
will be ignored. This is OK because we previously ensured that the `master`
359-
branch was up-to-date with all code changes in this maintenance branch before
360-
tagging.
361-
362-
### Publish release notes
363-
364-
The following template should be used for creating GitHub release notes via
365-
[this form](https://github.com/mongodb/mongo-php-library/releases/new).
366-
367-
```markdown
368-
The PHP team is happy to announce that version X.Y.Z of the MongoDB PHP library is now available.
369-
370-
**Release Highlights**
371-
372-
<one or more paragraphs describing important changes in this release>
373-
374-
A complete list of resolved issues in this release may be found in [JIRA]($JIRA_URL).
375-
376-
**Documentation**
377-
378-
Documentation for this library may be found in the [PHP Library Manual](https://mongodb.com/docs/php-library/current/).
379-
380-
**Installation**
381-
382-
This library may be installed or upgraded with:
383-
384-
composer require mongodb/mongodb:X.Y.Z
385-
386-
Installation instructions for the `mongodb` extension may be found in the [PHP.net documentation](https://php.net/manual/en/mongodb.installation.php).
387-
```
388-
389-
The URL for the list of resolved JIRA issues will need to be updated with each
390-
release. You may obtain the list from
391-
[this form](https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=12483).
392-
393-
If commits from community contributors were included in this release, append the
394-
following section:
395-
396-
```markdown
397-
**Thanks**
398-
399-
Thanks for our community contributors for this release:
400-
401-
* [$CONTRIBUTOR_NAME](https://github.com/$GITHUB_USERNAME)
402-
```
403-
404-
Release announcements should also be posted in the [MongoDB Product & Driver Announcements: Driver Releases](https://mongodb.com/community/forums/tags/c/announcements/driver-releases/110/php) forum and shared on Twitter.
405-
406-
### Documentation Updates for New Major and Minor Versions
407-
408-
New major and minor releases will also require documentation updates to other
409-
projects:
410-
411-
* Create a DOCSP ticket to add the new version to PHP's server and language
412-
[compatibility tables](https://mongodb.com/docs/drivers/php/#compatibility)
413-
in the driver docs portal. See
414-
[mongodb/docs-ecosystem#642](https://github.com/mongodb/docs-ecosystem/pull/642)
415-
for an example.
416-
417-
* Create a DOCSP ticket to update the "current" and "upcoming" navigation links
418-
in the library's [documentation](https://mongodb.com/docs/php-library/current). This
419-
will require updating
420-
[mongodb/docs-php-library](https://github.com/mongodb/docs-php-library).
421-
422-
These tasks can be initiated prior to tagging a new release to ensure that the
423-
updated content becomes accessible soon after the release is published.
195+
The releases are created by the maintainers of the library. The process is documented in
196+
the [RELEASING.md](RELEASING.md) file.

0 commit comments

Comments
 (0)