xref: /aosp_15_r20/external/accompanist/docs/updating.md (revision fa44fe6ae8e729aa3cfe5c03eedbbf98fb44e2c6)
1*fa44fe6aSInna Palant# Updating & releasing Accompanist
2*fa44fe6aSInna Palant
3*fa44fe6aSInna PalantThis doc is mostly for maintainers.
4*fa44fe6aSInna Palant
5*fa44fe6aSInna Palant## New features & bugfixes
6*fa44fe6aSInna PalantAll new features should be uploaded as PRs against the `main` branch.
7*fa44fe6aSInna Palant
8*fa44fe6aSInna PalantOnce merged into `main`, they will be automatically merged into the `snapshot` branch.
9*fa44fe6aSInna Palant
10*fa44fe6aSInna Palant## Jetpack Compose Snapshots
11*fa44fe6aSInna Palant
12*fa44fe6aSInna PalantWe publish snapshot versions of Accompanist, which depend on a `SNAPSHOT` versions of Jetpack Compose. These are built from the `snapshot` branch.
13*fa44fe6aSInna Palant
14*fa44fe6aSInna Palant### Updating to a newer Compose snapshot
15*fa44fe6aSInna Palant
16*fa44fe6aSInna PalantAs mentioned above, updating to a new Compose snapshot is done by submitting a new PR against the `snapshot` branch:
17*fa44fe6aSInna Palant
18*fa44fe6aSInna Palant``` sh
19*fa44fe6aSInna Palantgit checkout snapshot && git pull
20*fa44fe6aSInna Palant# Create branch for PR
21*fa44fe6aSInna Palantgit checkout -b update_snapshot
22*fa44fe6aSInna Palant```
23*fa44fe6aSInna Palant
24*fa44fe6aSInna PalantNow edit the project to depend on the new Compose SNAPSHOT version:
25*fa44fe6aSInna Palant
26*fa44fe6aSInna PalantEdit [`/gradle/libs.versions.toml`](https://github.com/google/accompanist/blob/main/gradle/libs.versions.toml):
27*fa44fe6aSInna Palant
28*fa44fe6aSInna PalantUnder `[versions]`:
29*fa44fe6aSInna Palant
30*fa44fe6aSInna Palant1. Update the `composesnapshot` property to be the snapshot number
31*fa44fe6aSInna Palant2. Ensure that the `compose` property is correct
32*fa44fe6aSInna Palant
33*fa44fe6aSInna PalantMake sure the project builds and test pass:
34*fa44fe6aSInna Palant```
35*fa44fe6aSInna Palant./gradlew check
36*fa44fe6aSInna Palant```
37*fa44fe6aSInna Palant
38*fa44fe6aSInna PalantNow `git commit` the changes and push to GitHub.
39*fa44fe6aSInna Palant
40*fa44fe6aSInna PalantFinally create a PR (with the base branch as `snapshot`) and send for review.
41*fa44fe6aSInna Palant
42*fa44fe6aSInna Palant## Releasing
43*fa44fe6aSInna Palant
44*fa44fe6aSInna PalantOnce the next Jetpack Compose version is out, we're ready to push a new release:
45*fa44fe6aSInna Palant
46*fa44fe6aSInna Palant### #1: Merge `snapshot` into `main`
47*fa44fe6aSInna Palant
48*fa44fe6aSInna PalantFirst we merge the `snapshot` branch into `main`:
49*fa44fe6aSInna Palant
50*fa44fe6aSInna Palant``` sh
51*fa44fe6aSInna Palantgit checkout snapshot && git pull
52*fa44fe6aSInna Palantgit checkout main && git pull
53*fa44fe6aSInna Palant
54*fa44fe6aSInna Palant# Create branch for PR
55*fa44fe6aSInna Palantgit checkout -b main_snapshot_merge
56*fa44fe6aSInna Palant
57*fa44fe6aSInna Palant# Merge in the snapshot branch
58*fa44fe6aSInna Palantgit merge snapshot
59*fa44fe6aSInna Palant```
60*fa44fe6aSInna Palant
61*fa44fe6aSInna Palant### #2: Update dependencies
62*fa44fe6aSInna Palant
63*fa44fe6aSInna PalantEdit [`/gradle/libs.versions.toml`](https://github.com/google/accompanist/blob/main/gradle/libs.versions.toml):
64*fa44fe6aSInna Palant
65*fa44fe6aSInna PalantUnder `[versions]`:
66*fa44fe6aSInna Palant
67*fa44fe6aSInna Palant1. Update the `composesnapshot` property to a single character (usually `-`). This disables the snapshot repository.
68*fa44fe6aSInna Palant2. Update the `compose` property to match the new release (i.e. `1.0.0-beta06`)
69*fa44fe6aSInna Palant
70*fa44fe6aSInna PalantMake sure the project builds and test pass:
71*fa44fe6aSInna Palant```
72*fa44fe6aSInna Palant./gradlew check
73*fa44fe6aSInna Palant```
74*fa44fe6aSInna Palant
75*fa44fe6aSInna PalantCommit the changes.
76*fa44fe6aSInna Palant
77*fa44fe6aSInna Palant### #3: Bump the version number
78*fa44fe6aSInna Palant
79*fa44fe6aSInna PalantEdit [gradle.properties](https://github.com/google/accompanist/blob/main/gradle.properties):
80*fa44fe6aSInna Palant
81*fa44fe6aSInna Palant * Update the `VERSION_NAME` property and remove the `-SNAPSHOT` suffix.
82*fa44fe6aSInna Palant
83*fa44fe6aSInna PalantCommit the changes, using the commit message containing the new version name.
84*fa44fe6aSInna Palant
85*fa44fe6aSInna Palant### #4: Push to GitHub
86*fa44fe6aSInna Palant
87*fa44fe6aSInna PalantPush the branch to GitHub and create a PR against the `main` branch, and send for review. Once approved and merged, it will be automatically deployed to Maven Central.
88*fa44fe6aSInna Palant
89*fa44fe6aSInna Palant### #5: Create release
90*fa44fe6aSInna Palant
91*fa44fe6aSInna PalantOnce the above PR has been approved and merged, we need to create the GitHub release:
92*fa44fe6aSInna Palant
93*fa44fe6aSInna Palant * Open up the [Releases](https://github.com/google/accompanist/releases) page.
94*fa44fe6aSInna Palant * At the top you should see a 'Draft' release, auto populated with any PRs since the last release. Click 'Edit'.
95*fa44fe6aSInna Palant * Make sure that the version number matches what we released (the tool guesses but is not always correct).
96*fa44fe6aSInna Palant * Double check everything, then press 'Publish release'.
97*fa44fe6aSInna Palant
98*fa44fe6aSInna PalantAt this point the release is published. This will trigger the docs action to run, which will auto-deploy a new version of the [website](https://google.github.io/accompanist/).
99*fa44fe6aSInna Palant
100*fa44fe6aSInna Palant### #6: Prepare the next development version
101*fa44fe6aSInna Palant
102*fa44fe6aSInna PalantThe current release is now finished, but we need to update the version for the next development version:
103*fa44fe6aSInna Palant
104*fa44fe6aSInna PalantEdit [gradle.properties](https://github.com/google/accompanist/blob/main/gradle.properties):
105*fa44fe6aSInna Palant
106*fa44fe6aSInna Palant * Update the `VERSION_NAME` property, by increasing the version number, and adding the `-SNAPSHOT` suffix.
107*fa44fe6aSInna Palant * Example: released version: `0.3.0`. Update to `0.3.1-SNAPSHOT`
108*fa44fe6aSInna Palant
109*fa44fe6aSInna Palant `git commit` and push to `main`.
110*fa44fe6aSInna Palant
111*fa44fe6aSInna PalantFinally, merge all of these changes back to `snapshot`:
112*fa44fe6aSInna Palant
113*fa44fe6aSInna Palant```
114*fa44fe6aSInna Palantgit checkout snapshot && git pull
115*fa44fe6aSInna Palantgit merge main
116*fa44fe6aSInna Palantgit push
117*fa44fe6aSInna Palant```