We ship fast and often.
We plan what new features we want to release in any given week, but we do not batch up features into one weekly release. Generally speaking, as soon as an individual feature is completed and merged into main, it should be released. Likewise, as soon as a bug is fixed, the fix should be released. On occasion, we may batch up multiple features that are expected to land the same day, but this happens on main, there is no release branch involved. In this case, we simply do not cut a new release until all the expected features land.
This allows us to avoid having to maintain release branches while ensuring that users are always able to use the latest features of the CDP SDK.
This section contains step-by-step instructions for publishing new versions of the CDP SDK.
Tip
When publishing a feature that has landed in both languages, you should release each one individually. Do not create one PR that contains the bump for both languages. This will make it easier to tag each package individually. You should follow the instructions for one language to completion, then move on to the next other language.
For PR linking and author attribution, you'll need a GitHub Personal Access Token.
- Go to https://github.com/settings/tokens and create a GitHub PAT with
read:userandrepo:statusscopes. This is for author attribution - Export your token in your shell (
export GITHUB_TOKEN={YOUR_TOKEN}), and optionally save it to your shell profile (echo "\nexport GITHUB_TOKEN={YOUR_TOKEN}" >> ~/.zshrc)
Follow these steps to publish a new version of the TypeScript CDP SDK.
- Ensure you are on the
mainbranch and have the latest changes - Create a new branch for your changes, e.g.
bump/ts. The branch name doesn't matter, and you will delete this branch after the release - From the
typescriptfolder, runpnpm changeset:versionto automatically bump the version and create a new changelog. Make note of the new version, as this will be used in subsequent steps - Manually update
src/version.tswith the new version - Add and commit the changes with the message:
chore: bump @coinbase/cdp-sdk to {NEW_VERSION} - Push your branch, create a PR and get an approval
- Once approved, merge your PR
- Once merged, manually trigger the Publish @coinbase/cdp-sdk workflow
- Once the workflow has completed, go back to the
mainbranch and pull the latest changes - Tag the new version with
git tag -s @coinbase/cdp-sdk@v{NEW_VERSION} -m "Release @coinbase/cdp-sdk {NEW_VERSION}" - Push the tag with
git push origin @coinbase/cdp-sdk@v{NEW_VERSION} - Delete your release branch
Follow these steps to publish a new version of the Python CDP SDK.
- Ensure you are on the
mainbranch and have the latest changes - Create a new branch for your changes, e.g.
bump/py. The branch name doesn't matter, and you will delete this branch after the release - Calculate the new version by looking at the files in the
changelog.dfolder:- If there is a file ending in
removal.md, this is a major version bump - If there is a file ending in
feature.md, this is a minor version bump - If there is a file ending in
bugfix.md, this is a patch version bump - For example, if the current version is
1.0.0and there is both a123.feature.mdand456.bugfix.md, the new version will be1.1.0
- If there is a file ending in
- Update the version number in the following files in the
python/folder with the new version:pyproject.tomlcdp/__version__.pydocs/conf.py
- Run
uv run towncrier build --yes --version={NEW_VERSION}to update the changelog - Add and commit all the changes with the message:
chore: bump cdp-sdk to {NEW_VERSION} - Push your branch, create a PR and get an approval
- Once approved, merge your PR
- Once merged, manually trigger the Publish cdp-sdk workflow
- Once the workflow has completed, go back to the
mainbranch and pull the latest changes - Tag the new version with
git tag -s cdp-sdk@v{NEW_VERSION} -m "Release cdp-sdk {NEW_VERSION}" - Push the tag with
git push origin cdp-sdk@v{NEW_VERSION} - Delete your release branch
- Trigger the Deploy CDP SDK documentation to GitHub Pages action. Select
pythonas the language to deploy
Follow these steps to publish a new version of the Rust CDP SDK.
- Ensure you are on the
mainbranch and have the latest changes - Create a new branch for your changes, e.g.
bump/rust. The branch name doesn't matter, and you will delete this branch after the release - Calculate the new version by looking at the files in the
rust/changelog.dfolder:- If there is a file ending in
removal.md, this is a major version bump - If there is a file ending in
feature.md, this is a minor version bump - If there is a file ending in
bugfix.md, this is a patch version bump - For example, if the current version is
1.0.0and there is both a123.feature.mdand456.bugfix.md, the new version will be1.1.0
- If there is a file ending in
- Update the version number in
rust/Cargo.toml - From the
rustfolder, rungit cliff --unreleased --tag v{NEW_VERSION} --prepend CHANGELOG.mdto update the changelog - Remove all files from
rust/changelog.d/except.gitignore - Add and commit all the changes with the message:
chore(rust): bump cdp-sdk to {NEW_VERSION} - Push your branch, create a PR and get an approval
- Once approved, merge your PR
- Once merged, manually trigger the Publish cdp-sdk (Rust) workflow
- Once the workflow has completed, go back to the
mainbranch and pull the latest changes - Tag the new version with
git tag -s cdp-sdk-rust@v{NEW_VERSION} -m "Release cdp-sdk (Rust) {NEW_VERSION}" - Push the tag with
git push origin cdp-sdk-rust@v{NEW_VERSION} - Delete your release branch
Follow these steps to publish a new version of the Java CDP SDK.
- Ensure you are on the
mainbranch and have the latest changes - Create a new branch for your changes, e.g.
bump/java. The branch name doesn't matter, and you will delete this branch after the release - Calculate the new version by looking at the files in the
java/changelog.dfolder:- If there is a file ending in
removal.md, this is a major version bump - If there is a file ending in
feature.md, this is a minor version bump - If there is a file ending in
bugfix.md, this is a patch version bump - For example, if the current version is
1.0.0and there is both a123.feature.mdand456.bugfix.md, the new version will be1.1.0
- If there is a file ending in
- Update the version number in
java/build.gradle.kts(theversionproperty) andjava/README.mdinstallation examples - From the
javafolder, rungit cliff --unreleased --tag v{NEW_VERSION} --prepend CHANGELOG.mdto update the changelog - Remove all files from
java/changelog.d/except.gitignore - Add and commit all the changes with the message:
chore(java): bump cdp-sdk to {NEW_VERSION} - Push your branch, create a PR and get an approval
- Once approved, merge your PR
- Once merged, manually trigger the Publish cdp-sdk (Java) workflow
- Once the workflow has completed, go back to the
mainbranch and pull the latest changes - Tag the new version with
git tag -s cdp-sdk-java@v{NEW_VERSION} -m "Release cdp-sdk (Java) {NEW_VERSION}" - Push the tag with
git push origin cdp-sdk-java@v{NEW_VERSION} - Delete your release branch