aboutsummaryrefslogtreecommitdiff
path: root/RELEASE.md
blob: d603b5d744a2779ba85b8dac2e546efae30438d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# kotlinx.atomicfu release checklist

To release new `<version>` of `kotlinx-atomicfu`:

1. Checkout `develop` branch: <br> 
   `git checkout develop`

2. Retrieve the most recent `develop`: <br> 
   `git pull`
   
3. Make sure the `master` branch is fully merged into `develop`:
   `git merge origin/master`   

4. Search & replace `<old-version>` with `<version>` 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-<version>`

7. Commit updated files to a new version branch:<br>
   `git commit -a -m "Version <version>"`
   
8. Push new version into the branch:<br>
   `git push -u origin version-<version>`
   
9. Create Pull-Request on GitHub from `version-<version>` branch into `master`:
   * Review it.
   * Make sure it build on CI.
   * Get approval for it.
   
10. Merge new version branch into `master`:<br>
   `git checkout master`<br>
   `git merge version-<version>`<br>
   `git push`<br>   
    **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 `<version>`. 
    * 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:<br>
   `git checkout develop`
 
15. Fetch the latest `master`:<br>
   `git fetch` 
   
16. Merge release from `master`:<br>
   `git merge origin/master`
   
17. Push updates to `develop`:<br>
   `git push`