|
| 1 | +# Module Release Guidelines |
| 2 | + |
| 3 | +## Create a Proposal Issue |
| 4 | + |
| 5 | +To prepare for a new release, create a [new issue](https://github.com/cloudevents/sdk-javascript/issues/new?assignees=&labels=&template=feature-request.md&title=) where the title of the issue cleary reflects the version to be released. |
| 6 | + |
| 7 | +For example: "Proposal for 3.2.0 release", or something similar. If you are not sure which version is the next version to be released, you can run `npm run release -- --dry-run` to find out what the next version will be. |
| 8 | + |
| 9 | +The body of the issue should be the commits that will be part of the release. This can be easily accomplished by running a git log command with a defined **range**. This range should start at the most recent version tag and end at the latest commit in the master branch. |
| 10 | + |
| 11 | +For example: |
| 12 | + |
| 13 | +``` |
| 14 | +git log v3.0.1..upstream/master --oneline |
| 15 | +``` |
| 16 | + |
| 17 | +This will output all the commits from the 3.0.1 tag to the latest commits in the remote upstream/master branch. |
| 18 | + |
| 19 | +This output should be pasted into the issue as normal text. This will allow Github to magically turn all commit hashes and PR/Issues numbers to links. |
| 20 | + |
| 21 | +### Get Consensus |
| 22 | + |
| 23 | +Before a release can be finalized, other maintainers should give a +1 or a thumbs up or some other identifying mark that they are good with the changes. |
| 24 | + |
| 25 | +## Create and Publish the release |
| 26 | + |
| 27 | +Once consensus has been reached on the proposal it is time to create the release and publish it to npm. |
| 28 | + |
| 29 | +### Create the Release |
| 30 | + |
| 31 | +Creating the release is as simple as running the release script: |
| 32 | + |
| 33 | +``` |
| 34 | +npm run release |
| 35 | +``` |
| 36 | + |
| 37 | +This will update the CHANGELOG.md and create a new tag based on the version. This can then be pushed upstream by doing: |
| 38 | + |
| 39 | +``` |
| 40 | +git push upstream master --follow-tags |
| 41 | +``` |
| 42 | + |
| 43 | +### Create the release on GitHub |
| 44 | + |
| 45 | +Once the release tag has been created and pushed up to Github, we should draft a new release using the Github UI, which is [located here](https://github.com/cloudevents/sdk-javascript/releases/new) |
| 46 | + |
| 47 | +* Tag Version should be the tag that was just created |
| 48 | +* The release title should be something like "VERSION Release" |
| 49 | +* And the Changelog entries for the current release should be copied/pasted into the comments |
| 50 | + |
| 51 | + |
| 52 | +### Publish to npm |
| 53 | + |
| 54 | +Once the new version has been created, we need to push it to npm. Assuming you have all the rights to do so, just run: |
| 55 | + |
| 56 | +``` |
| 57 | +npm publish |
| 58 | +``` |
| 59 | + |
| 60 | +## Close the Issue |
| 61 | + |
| 62 | +Once the release has been completed, the issue can be closed. |
0 commit comments