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```