# 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 ``` Otherwise, you can do a full merge: ```bash git merge ``` ## 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!