Files
composiohq--composio/ts/docs/internal/release.md
T
2026-07-13 12:38:34 +08:00

190 lines
5.2 KiB
Markdown

# Release Process
This document outlines the release processes for the Composio SDK. We support both automated releases through GitHub Actions and manual releases when needed.
## CLI Binary Release Process
The CLI binary release process is separate from npm publishing.
- `@composio/cli` is marked private and is not published to npm via Changesets.
- CLI binaries are built and published as GitHub Release assets by `.github/workflows/build-cli-binaries.yml`.
- Install and upgrade flows (`install.sh` and `composio upgrade`) download binaries from GitHub Releases.
- `composio upgrade --beta` resolves the newest CLI prerelease from GitHub Releases.
### Triggers
The CLI binary workflow supports two entry points:
- Beta release: the auto-generated Changesets release PR titled `Release: update version`
- Stable release: manual `workflow_dispatch`, but only from an existing beta release tag
### Beta CLI Release
When the Changesets release PR is opened or updated, the workflow:
1. Reads the bumped CLI version from `ts/packages/cli/package.json`
2. Publishes a prerelease tag in the form `@composio/cli@<version>-beta.<pr-number>`
3. Attaches the built binaries to that prerelease
### Stable CLI Release
When running **Build CLI Binaries** manually:
1. Enter an existing beta tag (for example `@composio/cli@1.2.3-beta.456`)
2. The workflow verifies that the beta release already exists and is marked as a prerelease
3. The workflow checks out the exact commit associated with that beta release
4. The workflow rebuilds the binaries and publishes the stable release under `@composio/cli@<version>`
### What the workflow does
1. Builds CLI binaries for Linux/macOS (x64 + arm64)
2. Creates platform zip archives (`composio-<platform>.zip`)
3. Publishes assets to the beta or stable GitHub Release
4. Runs `.github/workflows/cli.test-installation.yml` to validate installation paths and shell integration
### Notes
- Stable promotion is intentionally gated on an existing beta release so the shipped stable binaries always correspond to a tested beta artifact.
## Automated Release Process
The automated release process is triggered when code is merged into the `main` branch or manually through GitHub Actions.
### Requirements
- `NPM_TOKEN` secret must be configured in GitHub repository settings
- `CI_BOT_TOKEN` secret for GitHub authentication
- All changes must be documented using Changesets
- All quality checks must pass
### Using Automated Release
1. **For Regular Releases (via main branch)**
- Make sure your changeset is added to the PR you are merging to main. Run `pnpm changeset` on your branch before submiting the PR
- Get your PR merged to main
- The workflow will automatically:
- Create a release PR
- Publish packages when the release PR is merged
2. **For Manual Triggers**
- Go to GitHub Actions
- Select "TS SDK Release" workflow
- Click "Run workflow" on main branch
- Monitor the workflow progress
## Manual Release Process
The manual release process is available for cases where direct control over the release process is needed.
### Prerequisites
- Node.js, Bun, Python, Deno, uv, and pnpm from `mise.toml`
- Access to npm registry
- Write access to the repository
### Steps
1. **Prepare for Release**
```bash
# Ensure you're on the latest main
git checkout main
git pull origin main
# Install dependencies
mise install
pnpm install
# Run quality checks
pnpm build
pnpm check:peer-deps
```
2. **Create Changeset**
```bash
pnpm changeset
```
- Select affected packages
- Choose version bump type (major/minor/patch)
- Write a detailed change description
- Commit the generated changeset file
For pre-releases:
```bash
pnpm changeset:pre-enter
pnpm changeset
```
3. **Version Packages**
```bash
pnpm changeset:version
```
- Review the version changes
- Commit the package bumps
4. **Publish Packages**
```bash
# Ensure you're logged in to npm
npm login
# Publish
pnpm changeset:release
```
### Troubleshooting
1. **Authentication Issues**
- Ensure you're logged in to npm (`npm login`)
- Check npm token validity
- Verify registry settings in `.npmrc`
2. **Build Failures**
- Clear node_modules: `pnpm clean`
- Reinstall dependencies: `pnpm install`
- Check for peer dependency issues
3. **Version Conflicts**
- Check package.json versions
- Verify changeset entries
- Review git tags
## Best Practices
1. **Changesets**
- Write clear, descriptive changeset messages
- Include breaking changes prominently
- Reference relevant issues/PRs
2. **Version Management**
- Follow semver strictly
- Document breaking changes
- Update peer dependencies appropriately
3. **Quality Assurance**
- Run all tests before release
- Check bundle sizes
- Verify documentation updates
## Post-Release
1. **Verification**
- Check npm registry for new versions
- Verify package installations
- Test example projects
2. **Documentation**
- Update changelog if needed
- Update version numbers in docs
- Announce breaking changes
3. **Cleanup**
- Remove pre-release branches if any
- Update release tickets/issues
- Archive release artifacts