@@ -74,21 +74,22 @@ pip install -r etc/requirements.txt
74
74
75
75
## Tag the release
76
76
77
- If doing a minor release (e.g. releasing r3.8.0), stay on the master branch. You
78
- will create a new ` releases/v3.8 ` branch later in the instructions. If doing a
79
- patch release (e.g. releasing r3.7.3), check out the corresponding release
80
- branch, which should be the existing ` releases/v3.7 ` branch.
77
+ If doing a minor release (e.g. releasing r1.2.0, with a zero patch component),
78
+ stay on the master branch. You will create a new ` releases/vX.Y ` branch later in
79
+ the instructions. If doing a patch release (e.g. releasing rX.Y.Z with non-zero
80
+ ` Z ` ), check out the corresponding release branch, which should be an existing
81
+ ` releases/vX.Y ` branch.
81
82
82
83
Create a tag for the commit to serve as the release (or release candidate):
83
84
84
85
```
85
- git tag r3.8.0
86
+ git tag r1.2.3
86
87
```
87
88
88
89
## Run make_release.py
89
90
90
91
` make_release.py ` creates the distribution tarball
91
- (e.g. mongo-cxx-driver-r3.8.0 .tar.gz), interacts with Jira, and drafts the
92
+ (e.g. mongo-cxx-driver-r1.2.3 .tar.gz), interacts with Jira, and drafts the
92
93
release on GitHub.
93
94
94
95
To see all available options, run with ` --help `
@@ -113,7 +114,7 @@ python ./etc/make_release.py \
113
114
--dry-run \
114
115
--jira-creds-file ~/.secrets/jira_creds.txt \
115
116
--github-token-file ~/.secrets/github_token.txt \
116
- r3.8.0
117
+ r1.2.3
117
118
```
118
119
119
120
If all goes well, run the command again without ` --dry-run ` , which should build
@@ -130,15 +131,15 @@ follows:
130
131
- Use ` --skip-distcheck ` to bypass time consuming checks when building the
131
132
distribution tarball.
132
133
- If the script succeeded at creating the distribution tarball, pass it directly
133
- with ` --dist-file ./build/mongo-cxx-driver-r3.8.0 .tar.gz ` .
134
+ with ` --dist-file ./build/mongo-cxx-driver-r1.2.3 .tar.gz ` .
134
135
135
136
## Push the tag
136
137
137
138
Review the build output and, assuming the distcheck target is successful, push
138
- the tag:
139
+ the tag into the main remote :
139
140
140
141
```
141
- git push origin r3.8.0
142
+ git push [email protected] :mongodb/mongo-cxx-driver.git refs/tags/r1.2.3
142
143
```
143
144
144
145
### Release the Version in GitHub
@@ -167,7 +168,7 @@ to the repo:
167
168
168
169
```
169
170
git checkout releases/stable
170
- git reset --hard r3.8.0
171
+ git reset --hard r1.2.3
171
172
git push -f origin releases/stable
172
173
```
173
174
@@ -181,15 +182,18 @@ pushed.
181
182
following the established pattern. If this is a minor release (x.y.0), revise
182
183
the entire document as needed.
183
184
- Edit ` docs/content/_index.md ` and ` README.md ` to match.
184
- - Edit ` etc/generate-all-apidocs.pl ` and add the new release version to the
185
- ` @DOC_TAGS ` array, following the established pattern.
185
+ - Edit the ` Installing the MongoDB C driver ` section of
186
+ ` docs/content/mongocxx-v3/installation/advanced.md ` to reflect libmongoc
187
+ requirements.
186
188
- Edit ` docs/content/mongocxx-v3/installation/linux.md ` ,
187
189
` docs/content/mongocxx-v3/installation/macos.md ` and
188
- ` docs/content/mongocxx-v3/installation/windows.md ` and update ` Step 1 ` to
189
- reflect to libmongoc requirements. If the release was not a release candidate,
190
- update ` Step 3 ` to reflect the new latest stable version to download.
190
+ ` docs/content/mongocxx-v3/installation/windows.md ` .
191
+ If the release was not a release candidate, update ` Step 2 ` to reflect the
192
+ new latest stable version to download.
193
+ - Edit ` etc/generate-all-apidocs.pl ` and add the new release version to the
194
+ ` @DOC_TAGS ` array, following the established pattern.
191
195
- Commit these changes:
192
- ` git commit -am "Prepare to generate r3.8.0 release documentation" `
196
+ ` git commit -am "Prepare to generate r1.2.3 release documentation" `
193
197
- Ensure you have ` doxygen ` and ` hugo ` installed and up to date.
194
198
- Run ` git clean -dxf ` to clear out all extraneous files.
195
199
- Configure with ` cmake ` in the ` build ` directory as you usually would.
@@ -206,27 +210,19 @@ pushed.
206
210
- ` cmake --build ./build --target doxygen-deploy `
207
211
- If the release was not a release candidate, update symlinks
208
212
- Check out the ` gh-pages ` branch and git pull the deployed docs.
209
- - Update the ` api/mongocxx-v3 ` symlink to point to the newly released
210
- version. If a major version bump has occurred, revise the symlink structure
211
- as needed. Make sure ` current ` always points to a symlink tracking the
212
- latest stable release branch.
213
+ - Update the ` api/mongocxx-v3 ` symlink to point to the newly released version.
214
+ If a minor version bump has occurred, revise the symlink structure as
215
+ needed. Make sure ` current ` always points to a symlink tracking the latest
216
+ stable release branch.
213
217
- Commit and push the symlink change:
214
- ` git commit -am "Update symlink for r3.8.0 " `
218
+ ` git commit -am "Update symlink for r1.2.3 " `
215
219
- Wait a few minutes and verify mongocxx.org has updated.
216
220
- Checkout the master branch. Push the commit containing changes to ` etc/ ` and
217
221
` docs/ ` . This may require pushing the commit to a fork of the C++ Driver
218
222
repository and creating a pull request.
219
- - Edit the ` Installing the MongoDB C driver ` section of
220
- ` docs/content/mongocxx-v3/installation/advanced.md ` to reflect libmongoc
221
- requirements.
222
- - Edit ` docs/content/mongocxx-v3/installation/linux.md ` ,
223
- ` docs/content/mongocxx-v3/installation/macos.md ` and
224
- ` docs/content/mongocxx-v3/installation/windows.md ` .
225
- If the release was not a release candidate, update ` Step 2 ` to reflect the
226
- new latest stable version to download.
227
223
228
224
## Homebrew
229
- This requires a macOS machine.
225
+ This requires a macOS machine.
230
226
If this is a stable release, update the [ mongo-cxx-driver] ( https://github.com/Homebrew/homebrew-core/blob/master/Formula/mongo-cxx-driver.rb ) homebrew formula, using: ` brew bump-formula-pr --url <tarball url> `
231
227
232
228
Example:
@@ -255,7 +251,7 @@ of a release candidate of 3.6.0.
255
251
256
252
## Branch if necessary
257
253
258
- If doing a new minor release ` x.y ` (e.g. a ` 3.8 .0` release), create branch
254
+ If doing a new minor release ` x.y.0 ` (e.g. a ` 1.2 .0` release), create branch
259
255
` releases/vx.y ` (e.g ` releases/v3.8 ` ).
260
256
261
257
Push the new branch:
@@ -452,12 +448,11 @@ patch --dry-run -d .evergreen -p0 -i spec.patch
452
448
```
453
449
454
450
- If the patch command fails, rebase the patch
455
- - For a new major release (e.g., 3.6.0, 3.7.0, etc.), then ensure that the patch
456
- updates the ` up_version ` to be the NEXT major version
457
- (e.g., when releasing 3.7.0, the spec patch should update ` up_version ` to 3.8.0);
458
- this is necessary to ensure that the spec file matches the tarball created by
459
- the dist target; if this is wrong, then the ` rpm-package-build ` task will fail
460
- in the next step
451
+ - For a new minor release (e.g., 3.6.0, 3.7.0, etc.), then ensure that the patch
452
+ updates the ` up_version ` to be the NEXT minor version (e.g., when releasing
453
+ 1.2.0, the spec patch should update ` up_version ` to 1.3.0); this is necessary
454
+ to ensure that the spec file matches the tarball created by the dist target;
455
+ if this is wrong, then the ` rpm-package-build ` task will fail in the next step
461
456
- Additionally, ensure that any changes made on the release branch vis-a-vis the
462
457
spec file are also replicated on the ` master ` or ` main ` branch
463
458
- Test the build with something like this:
0 commit comments