# kotlinx.atomicfu release checklist To release new `` of `kotlinx-atomicfu`: 1. Checkout `develop` branch:
`git checkout develop` 2. Retrieve the most recent `develop`:
`git pull` 3. Make sure the `master` branch is fully merged into `develop`: `git merge origin/master` 4. Search & replace `` with `` across the project files. Should replace in: * [`README.md`](README.md) * [`gradle.properties`](gradle.properties) * Make sure to **exclude** `CHANGES.md` from replacements. As an alternative approach you can use `./bump-version.sh old_version new_version` 5. Write release notes in [`CHANGES.md`](CHANGES.md): * Use old releases as example of style. * Write each change on a single line (don't wrap with CR). * Study commit message from previous release. 6. Create branch for this release: `git checkout -b version-` 7. Commit updated files to a new version branch:
`git commit -a -m "Version "` 8. Push new version into the branch:
`git push -u origin version-` 9. Create Pull-Request on GitHub from `version-` branch into `master`: * Review it. * Make sure it build on CI. * Get approval for it. 10. Merge new version branch into `master`:
`git checkout master`
`git merge version-`
`git push`
**DO NOT USE GITHUB UI TO MERGE IT** 11. On [TeamCity integration server](https://teamcity.jetbrains.com/project.html?projectId=KotlinTools_KotlinxAtomicfu): * Wait until "Build" configuration for committed `master` branch passes tests. * Run "Deploy (Configure, RUN THIS ONE)" configuration with the corresponding new version. 12. In [GitHub](https://github.com/Kotlin/kotlinx.atomicfu) interface: * Create a release named ``. * Cut & paste lines from [`CHANGES.md`](CHANGES.md) into description. 13. In [Nexus](https://oss.sonatype.org/#stagingRepositories) admin interface: * Close the repository and wait for it to verify. * Release it. 14. Switch into `develop` branch:
`git checkout develop` 15. Fetch the latest `master`:
`git fetch` 16. Merge release from `master`:
`git merge origin/master` 17. Push updates to `develop`:
`git push`