Skip to content

Conversation

@itaismith
Copy link
Contributor

@itaismith itaismith commented Nov 4, 2025

This PR updates CI for releasing the CLI, and our Python and JS/TS clients.

RELEASE_PROCESS.md updated with instructions to:

  • Release the Python client.
  • Release the JS/TS client.
  • Release the CLI, and subsequent client releases for CLI bundling.

JS/TS release CI workflows updated for the new JS/TS client.

New release-chromadb-all workflow for testing, releasing the CLI, building and releasing JS bindings, and releasing the clients.

@github-actions
Copy link

github-actions bot commented Nov 4, 2025

Reviewer Checklist

Please leverage this checklist to ensure your code review is thorough before approving

Testing, Bugs, Errors, Logs, Documentation

  • Can you think of any use case in which the code does not behave as intended? Have they been tested?
  • Can you think of any inputs or external events that could break the code? Is user input validated and safe? Have they been tested?
  • If appropriate, are there adequate property based tests?
  • If appropriate, are there adequate unit tests?
  • Should any logging, debugging, tracing information be added or removed?
  • Are error messages user-friendly?
  • Have all documentation changes needed been made?
  • Have all non-obvious changes been commented?

System Compatibility

  • Are there any potential impacts on other parts of the system or backward compatibility?
  • Does this change intersect with any items on our roadmap, and if so, is there a plan for fitting them together?

Quality

  • Is this code of a unexpectedly high quality (Readability, Modularity, Intuitiveness)

@itaismith itaismith marked this pull request as ready for review November 6, 2025 06:22
@itaismith itaismith requested a review from jairad26 November 6, 2025 06:22
@propel-code-bot
Copy link
Contributor

Unify and Automate End-to-End Release Workflow for CLI, Python, and JS/TS Clients

This PR revamps the release process by introducing a single GitHub Action that tests, builds, and publishes all distributables—the Rust CLI, Python package, and JS/TS client—from one canonical workflow. Supporting CI jobs and documentation have been realigned to this unified path, eliminating duplicate compilation steps and reducing manual release effort. No production code changes accompany this update; the impact is limited to CI, build scripts, and docs, streamlining the maintainer experience and ensuring artifact consistency across languages.

Key Changes

• Added .github/workflows/release-chromadb-all.yml to orchestrate tests, build, and multi-language publishing
• Modernised and renamed JS/TS client release workflows to align with new project layout and versioning
• Refactored _build_release_cli.yml so the CLI artifact can be reused by downstream jobs
• Locked Rust dependencies via Cargo.lock update
• Rewrote RELEASE_PROCESS.md with end-to-end instructions and tag/ordering requirements

Affected Areas

• GitHub Actions CI/CD workflows
• Release documentation
• CLI build pipeline
• JavaScript/TypeScript client CI jobs

This summary was automatically generated by @propel-code-bot

Comment on lines +31 to +32
echo "Tag does not match the release tag pattern (cli_X.Y.Z_python_A.B.C_js_D.E.F), exiting workflow"
echo "tag_matches=false" >> $GITHUB_OUTPUT
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[BestPractice]

If the tag doesn't match the expected format, this step prints a message but the job succeeds. This allows subsequent jobs to run with empty version variables, which will likely cause them to fail with confusing errors. It's better to fail this job immediately to make it clear why the workflow stopped.

Context for Agents
[**BestPractice**]

If the tag doesn't match the expected format, this step prints a message but the job succeeds. This allows subsequent jobs to run with empty version variables, which will likely cause them to fail with confusing errors. It's better to fail this job immediately to make it clear why the workflow stopped.

File: .github/workflows/release-chromadb-all.yml
Line: 32

Comment on lines +244 to +267
- name: Update Tag
uses: richardsimko/[email protected]
if: ${{ needs.check-tag.outputs.tag_matches != 'true' }}
with:
tag_name: latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release Latest
uses: ncipollo/[email protected]
if: ${{ needs.check-tag.outputs.tag_matches != 'true' }}
with:
tag: "latest"
name: "Latest"
body: |
Version: `${{needs.get-python-version.outputs.version}}`
Git ref: `${{github.ref}}`
Build Date: `${{steps.builddate.outputs.builddate}}`
PIP Package: `chroma-${{needs.get-python-version.outputs.version}}.tar.gz`
Github Container Registry Image: `${{ env.GHCR_IMAGE_NAME }}:${{ needs.get-python-version.outputs.version }}`
DockerHub Image: `${{ env.DOCKERHUB_IMAGE_NAME }}:${{ needs.get-python-version.outputs.version }}`
artifacts: "dist/*"
allowUpdates: true
removeArtifacts: true
prerelease: true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[BestPractice]

The Update Tag and Release Latest steps seem designed to create a latest pre-release. However, this workflow is specifically triggered by version tags (e.g., cli_A.B.C_python_D.E.F_js_X.Y.Z). The logic to handle non-matching tags by creating a latest release seems out of place for a versioned release workflow and could lead to unexpected behavior if a malformed tag is pushed. Consider removing these steps to ensure this workflow only handles explicit versioned releases.

Context for Agents
[**BestPractice**]

The `Update Tag` and `Release Latest` steps seem designed to create a `latest` pre-release. However, this workflow is specifically triggered by version tags (e.g., `cli_A.B.C_python_D.E.F_js_X.Y.Z`). The logic to handle non-matching tags by creating a `latest` release seems out of place for a versioned release workflow and could lead to unexpected behavior if a malformed tag is pushed. Consider removing these steps to ensure this workflow only handles explicit versioned releases.

File: .github/workflows/release-chromadb-all.yml
Line: 267

@itaismith itaismith requested a review from codetheweb November 6, 2025 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants