You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.9 KiB

# Making a new SDK release
This guide shows how to make a new Perfetto SDK release.
Before snapshotting a release, check that no [release-blockers](http://b/savedsearches/5776355) are
open.
Check out the code:
```bash
git clone https://android.googlesource.com/platform/external/perfetto
cd perfetto
```
Next, decide the version number for the new release (vX.Y).
The major version number (X) is incremented on every release (monthly).
The minor version number is incremented only for minor changes / fixes on top of the monthly
release (cherry-picks on the releases/vN.x branch).
Continue with the appropriate section below.
## a) Creating a new major version
Create a release branch for the new major version ("v16.x" here):
```bash
git fetch origin
git push origin origin/master:refs/heads/releases/v16.x
git fetch origin
git checkout -b releases/v16.x -t origin/releases/v16.x
```
Continue with [building the release](#building-and-tagging-the-release).
## b) Bumping the minor version
Check out the existing release branch ("5.x" here) and merge in the desired
revision for the new release, resolving any conflicts you may encounter.
```bash
git checkout -b releases/v16.x -t origin/releases/v16.x
```
If you only want to introduce one or two patches in the new release, consider
cherry-picking them individually:
```bash
git cherry-pick <sha1>
```
Otherwise, you can do a full merge:
```bash
git merge <sha1>
```
## Building and tagging the release
1. Generate and commit the amalgamated source files.
```bash
tools/gen_amalgamated --output sdk/perfetto
git add sdk/perfetto.{cc,h}
git commit -m "Amalgamated source for vX.Y"
```
2. Check that the SDK example code works with the new release.
```bash
cd examples/sdk
cmake -B build
cmake --build build
```
3. Upload the new release for review.
```bash
git cl upload --no-squash
```
If you get an error about a missing Change-Id field (`remote: ERROR: commit
a7c7c4c: missing Change-Id in message footer`), install the commit-msg hook
script and amend the change to make sure that field is present:
```bash
curl -Lo .git/hooks/commit-msg http://android-review.googlesource.com/tools/hooks/commit-msg
chmod u+x .git/hooks/commit-msg
git commit --amend
```
4. Once the release has been reviewed and landed, create and push the tag for
it ("vX.Y" being the new version).
```bash
# This brings the branch up to date with the CL landed in the step above.
git pull
git status
# Should print: Your branch is up to date with 'origin/releases/v16.x'.
# Do NOT proceed if your branch has diverged from origin/releases/vX.X
git tag -a -m "Perfetto vX.Y" vX.Y
git push origin vX.Y
```
5. Update the documentation to point to the latest release.
- [docs/instrumentation/tracing-sdk.md](/docs/instrumentation/tracing-sdk.md)
- [examples/sdk/README.md](/examples/sdk/README.md)
6. Send an email with the CHANGELOG to perfetto-dev@ (internal) and perfetto-dev@googlegroups.com.
Phew, you're done!