diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f54091736..8f7645d0f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,23 +60,19 @@ To run tests use `make test_[iOS|tvOS|macOS]`. These tests expect you to have a For each release, the following needs to be done: * Create a new branch `release/x.x.x` (where `x.x.x` is the new version number) from the `main` branch -* Run `make bump_[major|minor|patch]` to bump the new version number (creates a Git commit) -* Run [`github_changelog_generator`](https://github.com/github-changelog-generator/github-changelog-generator) to automate the update of the [CHANGELOG](./CHANGELOG.md). This may require some manual intervention, both in terms of how the command is run and how the change log file is modified. Your mileage may vary: - * The command you will need to run will look something like this: `github_changelog_generator -u ably -p ably-cocoa --since-tag 1.2.9 --output delta.md` - * Using the command above, `--output delta.md` writes changes made after `--since-tag` to a new file - * The contents of that new file (`delta.md`) then need to be manually inserted at the top of the `CHANGELOG.md`, changing the "Unreleased" heading and linking with the current version numbers - * Also ensure that the "Full Changelog" link points to the new version tag instead of the `HEAD` - * Commit this change: `git add CHANGELOG.md && git commit -m "Update change log."` -* Push both commits to origin: `git push -u origin release/x.x.x` +* Run `make bump_[major|minor|patch]` to bump the new version number. This will create a Git commit, push it to origin: `git push -u origin release/x.x.x` +* Go to [Github releases](https://github.com/ably/ably-cocoa/releases) and press the `Draft a new release` button. Choose your new branch as a target +* Press the `Choose a tag` dropdown and start typing a new tag, Github will suggest the `Create new tag x.x.x on publish` option. After you select it Github will unveil the `Generate release notes` button +* From the newly generated changes remove everything that don't make much sense to the library user +* Copy the final list of changes to the top of the `CHANGELOG.md` file. Modify as necessary to fit the existing format of this file +* Commit these changes and push to the origin `git add CHANGELOG.md && git commit -m "Update change log." && git push -u origin release/x.x.x` * Make a pull request against `main` and await approval of reviewer(s) * Once approved and/or any additional commits have been added, merge the PR (f you do this from Github's web interface then use the "Rebase and merge" option) * After merging the PR, wait for all CI jobs for `main` to pass. -* Checkout `main` locally, pulling in changes from above using `git checkout main && git pull` -* If any fixes are needed (e.g. the lint fails with warnings) then either commit them to `main` branch now if they are simple warning fixes or perhaps consider raising a new PR if they are complex or likely to need review. -* Create a tag for this version number using `git tag x.x.x` -* Push the tag using `git push origin x.x.x` -* Release an update for CocoaPods using `pod trunk push Ably.podspec`. Details on this command, as well as instructions for adding other contributors as maintainers, are at [Getting setup with Trunk](https://guides.cocoapods.org/making/getting-setup-with-trunk.html) in the [CocoaPods Guides](https://guides.cocoapods.org/) -* Add to [releases](https://github.com/ably/ably-cocoa/releases) +* If any fixes are needed (e.g. the lint fails with warnings) then either commit them to the `main` branch now (don't forget to pull the changes first `git checkout main && git pull`) if they are simple warning fixes or perhaps consider raising a new PR if they are complex or likely need a review. +* Publish your drafted release: * refer to previous releases for release notes format * attach to the release the prebuilt framework file (`Ably.framework.zip`) generated by Carthage – you can find this file in the `carthage-built-framework` artifact uploaded by the `check-pod` CI workflow +* Checkout `main` locally, pulling in changes using `git checkout main && git pull`. Make sure the new tag you need was created on publish +* Release an update for CocoaPods using `pod trunk push Ably.podspec`. Details on this command, as well as instructions for adding other contributors as maintainers, are at [Getting setup with Trunk](https://guides.cocoapods.org/making/getting-setup-with-trunk.html) in the [CocoaPods Guides](https://guides.cocoapods.org/) * Test the integration of the library in a Xcode project using Carthage and CocoaPods using the [installation guide](https://github.com/ably/ably-cocoa#installation-guide)