-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[ENH] Update release process #5807
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Reviewer ChecklistPlease leverage this checklist to ensure your code review is thorough before approving Testing, Bugs, Errors, Logs, Documentation
System Compatibility
Quality
|
|
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 Affected Areas• GitHub Actions CI/CD workflows This summary was automatically generated by @propel-code-bot |
| 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 |
There was a problem hiding this comment.
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| - 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 |
There was a problem hiding this comment.
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
This PR updates CI for releasing the CLI, and our Python and JS/TS clients.
RELEASE_PROCESS.mdupdated with instructions to:JS/TS release CI workflows updated for the new JS/TS client.
New
release-chromadb-allworkflow for testing, releasing the CLI, building and releasing JS bindings, and releasing the clients.