| # Updating & releasing Accompanist |
| |
| This doc is mostly for maintainers. |
| |
| ## New features & bugfixes |
| All new features should be uploaded as PRs against the `main` branch. |
| |
| Once merged into `main`, they will be automatically merged into the `snapshot` branch. |
| |
| ## Jetpack Compose Snapshots |
| |
| We publish snapshot versions of Accompanist, which depend on a `SNAPSHOT` versions of Jetpack Compose. These are built from the `snapshot` branch. |
| |
| ### Updating to a newer Compose snapshot |
| |
| As mentioned above, updating to a new Compose snapshot is done by submitting a new PR against the `snapshot` branch: |
| |
| ``` sh |
| git checkout snapshot && git pull |
| # Create branch for PR |
| git checkout -b update_snapshot |
| ``` |
| |
| Now edit the project to depend on the new Compose SNAPSHOT version: |
| |
| Edit [`/gradle/libs.versions.toml`](https://github.com/google/accompanist/blob/main/gradle/libs.versions.toml): |
| |
| Under `[versions]`: |
| |
| 1. Update the `composesnapshot` property to be the snapshot number |
| 2. Ensure that the `compose` property is correct |
| |
| Make sure the project builds and test pass: |
| ``` |
| ./gradlew check |
| ``` |
| |
| Now `git commit` the changes and push to GitHub. |
| |
| Finally create a PR (with the base branch as `snapshot`) and send for review. |
| |
| ## Releasing |
| |
| Once the next Jetpack Compose version is out, we're ready to push a new release: |
| |
| ### #1: Merge `snapshot` into `main` |
| |
| First we merge the `snapshot` branch into `main`: |
| |
| ``` sh |
| git checkout snapshot && git pull |
| git checkout main && git pull |
| |
| # Create branch for PR |
| git checkout -b main_snapshot_merge |
| |
| # Merge in the snapshot branch |
| git merge snapshot |
| ``` |
| |
| ### #2: Update dependencies |
| |
| Edit [`/gradle/libs.versions.toml`](https://github.com/google/accompanist/blob/main/gradle/libs.versions.toml): |
| |
| Under `[versions]`: |
| |
| 1. Update the `composesnapshot` property to a single character (usually `-`). This disables the snapshot repository. |
| 2. Update the `compose` property to match the new release (i.e. `1.0.0-beta06`) |
| |
| Make sure the project builds and test pass: |
| ``` |
| ./gradlew check |
| ``` |
| |
| Commit the changes. |
| |
| ### #3: Bump the version number |
| |
| Edit [gradle.properties](https://github.com/google/accompanist/blob/main/gradle.properties): |
| |
| * Update the `VERSION_NAME` property and remove the `-SNAPSHOT` suffix. |
| |
| Commit the changes, using the commit message containing the new version name. |
| |
| ### #4: Push to GitHub |
| |
| Push 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. |
| |
| ### #5: Create release |
| |
| Once the above PR has been approved and merged, we need to create the GitHub release: |
| |
| * Open up the [Releases](https://github.com/google/accompanist/releases) page. |
| * At the top you should see a 'Draft' release, auto populated with any PRs since the last release. Click 'Edit'. |
| * Make sure that the version number matches what we released (the tool guesses but is not always correct). |
| * Double check everything, then press 'Publish release'. |
| |
| At 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/). |
| |
| ### #6: Prepare the next development version |
| |
| The current release is now finished, but we need to update the version for the next development version: |
| |
| Edit [gradle.properties](https://github.com/google/accompanist/blob/main/gradle.properties): |
| |
| * Update the `VERSION_NAME` property, by increasing the version number, and adding the `-SNAPSHOT` suffix. |
| * Example: released version: `0.3.0`. Update to `0.3.1-SNAPSHOT` |
| |
| `git commit` and push to `main`. |
| |
| Finally, merge all of these changes back to `snapshot`: |
| |
| ``` |
| git checkout snapshot && git pull |
| git merge main |
| git push |
| ``` |