Skip to content

Conversation

@rohansaibuddhi
Copy link

What this PR does / why we need it:
Replaces the python script being currently used with git-cliff.

Which issue(s) this PR fixes :
Will close the issue #99 when the PR gets merged.

Fixes #99

Checklist:

  • Docs included if any changes are user facing

-The change closely follows the working of the Python script. In the current state of the repository, both the methods should generate the same changelog.
-Requires developers to follow "conventional commits" as mentioned in contributing.md.
-Works best with squash merges - https://git-cliff.org/docs/#how-should-i-manage-prs

@google-oss-prow google-oss-prow bot requested a review from kramaranya October 2, 2025 22:18
@google-oss-prow
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign electronic-waste for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@google-oss-prow google-oss-prow bot requested a review from szaher October 2, 2025 22:18
Copy link
Contributor

@kramaranya kramaranya left a comment

Choose a reason for hiding this comment

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

This looks great, thank you for this @rohansaibuddhi!
Could you please update https://github.com/kubeflow/sdk/blob/main/RELEASE.md as well?

cc @kubeflow/kubeflow-sdk-team

Makefile Outdated
Comment on lines 74 to 82
@PREV_TAG=$$(git tag -l --sort=-creatordate | head -1); \
CHANGELOG_FILE=CHANGELOG/CHANGELOG-$$(echo $(VERSION) | cut -d. -f1-2).md; \
if [ -z "$$PREV_TAG" ]; then \
GITHUB_TOKEN=$${GITHUB_TOKEN} git-cliff --tag $(VERSION) -o $$CHANGELOG_FILE; \
elif [ -f "$$CHANGELOG_FILE" ]; then \
GITHUB_TOKEN=$${GITHUB_TOKEN} git-cliff $$PREV_TAG..HEAD --tag $(VERSION) --prepend $$CHANGELOG_FILE; \
else \
GITHUB_TOKEN=$${GITHUB_TOKEN} git-cliff $$PREV_TAG..HEAD --tag $(VERSION) -o $$CHANGELOG_FILE; \
fi
Copy link
Contributor

Choose a reason for hiding this comment

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

This will generate chnagelog for RCs, could we skip it in this case since we decided that we'll provide changelogs for stable versions only?
cc @andreyvelich

Makefile Outdated
sed -i.bak "s/^__version__ = \".*\"/__version__ = \"$$V_NO_V\"/" kubeflow/__init__.py && \
rm -f kubeflow/__init__.py.bak
@uv run python scripts/gen-changelog.py --token=$${GITHUB_TOKEN} --version=$(VERSION)
@PREV_TAG=$$(git tag -l --sort=-creatordate | head -1); \
Copy link
Contributor

Choose a reason for hiding this comment

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

What if the last tag was 0.2.1rc1, the new release 0.2.1 will only show changes since the RC, not since 0.2.0, right? Could you update it so that for stable releases we compute the previous tag from the last stable tag?

Copy link
Author

Choose a reason for hiding this comment

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

Makes sense. This will lead to duplication of commits between the last stable tag and 0.2.1rc1, considering we do generate changelog for RCs, would that behavior be okay?

In case there is no last stable commit, it would take all commits since the first commit. Is that expected behavior? I know we do not have to deal with this edge case since we already have 0.1.0, but wanted to confirm.

split_commits = false
commit_preprocessors = []
protect_breaking_commits = false
commit_parsers = [
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we also skip commits for Kubeflow SDK releases, like this 46b42d0?

Copy link
Author

Choose a reason for hiding this comment

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

would we want this to be an exact match like '^Kubeflow SDK Official Release' or something more flexible like ".*Release [0-9]". If it is the former, we should probably add the convention to RELEASE.md as well, let me know what you think.

cliff.toml Outdated
{% endfor %}
"""
trim = true
render_always = true
Copy link
Contributor

Choose a reason for hiding this comment

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

Why do we want to render always?

Copy link
Author

Choose a reason for hiding this comment

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

should we just skip rendering the 'Changelog [version] (date)' in the case there are no changes since the last release?

@rohansaibuddhi
Copy link
Author

@kramaranya
The steps in RELEASE.md remain the same with git-cliff as well - i.e. export github token and run 'make release VERSION = {version_num}' locally. I believe GitHub CI will handle the rest in the same manner as before, please correct me if I'm wrong.

- updated README.md
- stable release tags are generated based on changes from last stable release
- removed ineligible PR types
- skip commits with 'Kubeflow SDK Official Release'
- added new contributors section
@kramaranya
Copy link
Contributor

Hey @rohansaibuddhi! Sorry for the delayed reply. Could you please rebase your PR and sign the commits?

@jaiakash
Copy link
Member

jaiakash commented Dec 11, 2025

kramaranya and others added 19 commits December 11, 2025 14:21
* fix(ci): Fix first-time PR welcome workflow

Signed-off-by: kramaranya <[email protected]>

* Add first issue messsage

Signed-off-by: kramaranya <[email protected]>

---------

Signed-off-by: kramaranya <[email protected]>
* feat: Add lora types.

Signed-off-by: Electronic-Waste <[email protected]>

* chore: propagate lora parameters in command.

Signed-off-by: Electronic-Waste <[email protected]>

* feat(lora): Add support for QLoRA.

Signed-off-by: Electronic-Waste <[email protected]>

* fix(lora): remove extra quote symbol in lora attn module.

Signed-off-by: Electronic-Waste <[email protected]>

* fix(lora): replace direct field override with field map.

Signed-off-by: Electronic-Waste <[email protected]>

* fix(lora): remove extra flags.

Signed-off-by: Electronic-Waste <[email protected]>

* fix(lora): fix wrong default list value in LoraConfig.

Signed-off-by: Electronic-Waste <[email protected]>

* fix(lora): rmeove outdated code.

Signed-off-by: Electronic-Waste <[email protected]>

* test(backend): Add test for lora.

Signed-off-by: Electronic-Waste <[email protected]>

---------

Signed-off-by: Electronic-Waste <[email protected]>
* added(AGENTS.MD): added AGENTS.MD
Signed-off-by: Parthib Mukherjee <[email protected]>

* docs: Revise AGENTS.md for comprehensive guidance on setup, tooling, and development principles

Signed-off-by: Parthib Mukherjee <[email protected]>

* Remove introductory line from AGENTS.md

Removed introductory line about AGENTS guide.

Signed-off-by: Parthib Mukherjee <[email protected]>

* docs: Revise AGENTS.md to clarify agent behavior policies and development workflow

Signed-off-by: Parthib Mukherjee <[email protected]>

---------

Signed-off-by: Parthib Mukherjee <[email protected]>
Signed-off-by: Parthib Mukherjee <[email protected]>
* Init commit

Signed-off-by: Andrey Velichkevich <[email protected]>

* Create optimize() API

Signed-off-by: Andrey Velichkevich <[email protected]>

* Set retain=True for Experiment

Signed-off-by: Andrey Velichkevich <[email protected]>

* Fix location to Trainer utils

Signed-off-by: Andrey Velichkevich <[email protected]>

* Implement get_job, list_jobs, and delete_job APIs

Signed-off-by: Andrey Velichkevich <[email protected]>

* Add metrics and parameters to Trial object

Signed-off-by: Andrey Velichkevich <[email protected]>

* Clarify message for objective

Signed-off-by: Andrey Velichkevich <[email protected]>

* Move TrainJobTemplate to the Trainer types

Signed-off-by: Andrey Velichkevich <[email protected]>

* Rename CRD to CR

Signed-off-by: Andrey Velichkevich <[email protected]>

* Fix serialization of TrainJob

Signed-off-by: Andrey Velichkevich <[email protected]>

* Rename ExecutionBackend to RuntimeBackend

Signed-off-by: Andrey Velichkevich <[email protected]>

* Export GridSearch
Rename common types

Signed-off-by: Andrey Velichkevich <[email protected]>

* Add OptimizationJob constant

Signed-off-by: Andrey Velichkevich <[email protected]>

* Change to BaseAlgorithm

Signed-off-by: Andrey Velichkevich <[email protected]>

* Keep func_args for Trainer

Signed-off-by: Andrey Velichkevich <[email protected]>

* Use PyPI package for Katib models

Signed-off-by: Andrey Velichkevich <[email protected]>

* Update lock file

Signed-off-by: Andrey Velichkevich <[email protected]>

---------

Signed-off-by: Andrey Velichkevich <[email protected]>
…age (kubeflow#127)

* feat(trainer): Add CustomTrainerContainer to create TrainJobs from image

Signed-off-by: Andrey Velichkevich <[email protected]>

* Update kubeflow/trainer/types/types.py

Co-authored-by: Anya Kramar <[email protected]>
Signed-off-by: Andrey Velichkevich <[email protected]>

* Update train docstring

Signed-off-by: Andrey Velichkevich <[email protected]>

---------

Signed-off-by: Andrey Velichkevich <[email protected]>
Co-authored-by: Anya Kramar <[email protected]>
* chore(sdk): add ok-to-test approval workflow

Signed-off-by: Aniket Patil <[email protected]>

* chore(ci): rename workflow file for consistency

Signed-off-by: Aniket Patil <[email protected]>

---------

Signed-off-by: Aniket Patil <[email protected]>
* Add pre-commit configuration and CI workflow

Signed-off-by: Aniket Patil <[email protected]>

* chore(ci): move pre-commit job into test-python workflow

Signed-off-by: Aniket Patil <[email protected]>

---------

Signed-off-by: Aniket Patil <[email protected]>
* Add docker backend

Signed-off-by: Brian Gallagher <[email protected]>

* Add podman backend

Signed-off-by: Fiona Waters <[email protected]>

* Implementing ContainerBackend

Signed-off-by: Fiona Waters <[email protected]>

* Use ip address for Podman

Signed-off-by: Fiona Waters <[email protected]>

* Updating to rely on container runtime rather than storing job info in memory

Signed-off-by: Fiona Waters <[email protected]>

* Addressing feedback

Signed-off-by: Fiona Waters <[email protected]>

* Checking common sockets before failing

Signed-off-by: Fiona Waters <[email protected]>

---------

Signed-off-by: Brian Gallagher <[email protected]>
Signed-off-by: Fiona Waters <[email protected]>
Co-authored-by: Brian Gallagher <[email protected]>
* fix(trainer): Fix S3 initializer implementation

Signed-off-by: Andrey Velichkevich <[email protected]>

* Export initializers

Signed-off-by: Andrey Velichkevich <[email protected]>

---------

Signed-off-by: Andrey Velichkevich <[email protected]>
* chore: Add HPO support to readme and SDK diagram

Signed-off-by: kramaranya <[email protected]>

* Remove objective from example in readme

Signed-off-by: kramaranya <[email protected]>

* Add examples/ readme

Signed-off-by: kramaranya <[email protected]>

---------

Signed-off-by: kramaranya <[email protected]>
…ptimizerClient (kubeflow#145)

* feat: Add wait_for_job_status to optimizer

Signed-off-by: kramaranya <[email protected]>

* Add optimizationjob constant to the client

Signed-off-by: kramaranya <[email protected]>

* feat: Add get_best_trial API to Optimizer Client

Signed-off-by: kramaranya <[email protected]>

* Reorder APIs

Signed-off-by: kramaranya <[email protected]>

* Add get_experiment_cr function

Signed-off-by: kramaranya <[email protected]>

---------

Signed-off-by: kramaranya <[email protected]>
* fix: Update Kubeflow SDK diagram

Signed-off-by: kramaranya <[email protected]>

* Update the diagram source

Signed-off-by: kramaranya <[email protected]>

---------

Signed-off-by: kramaranya <[email protected]>
* fix(sdk): Fix empty image for Runtime trainer

Signed-off-by: Andrey Velichkevich <[email protected]>

* Add options to container train API

Signed-off-by: Andrey Velichkevich <[email protected]>

* Set name from options in container backend

Signed-off-by: Andrey Velichkevich <[email protected]>

* Fix get_job_logs

Signed-off-by: Andrey Velichkevich <[email protected]>

* Fix test

Signed-off-by: Andrey Velichkevich <[email protected]>

---------

Signed-off-by: Andrey Velichkevich <[email protected]>
kramaranya and others added 19 commits December 11, 2025 14:22
* fix(trainer): Fix listing containers with Podman backend

Signed-off-by: Antonin Stefanutti <[email protected]>

* Fix list_containers typing in Docker backend

Signed-off-by: Antonin Stefanutti <[email protected]>

---------

Signed-off-by: Antonin Stefanutti <[email protected]>
…hon virtual environment (kubeflow#162)

* fix --user issue

Signed-off-by: Brian Gallagher <[email protected]>

* run pip checks for --user at runtime

Signed-off-by: Brian Gallagher <[email protected]>

---------

Signed-off-by: Brian Gallagher <[email protected]>
…flow#181)

* fix: update permissions for welcome workflow to avoid 403 errors

Signed-off-by: Aniket Patil <[email protected]>

* fix: remove unnecessary permissions, keep only contents: write

Signed-off-by: Aniket Patil <[email protected]>

* fix: move contents: write to workflow-level permissions

Signed-off-by: Aniket Patil <[email protected]>

* fix: replace pull_request with pull_request_target

Signed-off-by: Aniket Patil <[email protected]>

---------

Signed-off-by: Aniket Patil <[email protected]>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/stale](https://github.com/actions/stale) from 5 to 10.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](actions/stale@v5...v10)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v4...v6)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v7...v8)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@jaiakash
Copy link
Member

jaiakash commented Dec 13, 2025

Hi @rohansaibuddhi

  1. Did you rebase or did git merge, i see there are lot of unrelated changes in this. Please rebase proelry or raise a new PR with related changes only.
Screenshot 2025-12-13 at 12 34 24 PM
  1. Also your commits are not sign, please follow this to auto sign all commits, https://stackoverflow.com/questions/10161198/is-there-a-way-to-autosign-commits-in-git-with-a-gpg-key

Btw thanks for working on this

@rohansaibuddhi
Copy link
Author

Hey there, sorry for the delayed response.
I did try to rebase it, I think my flow of rebasing was wrong.
I will be opening a new PR with the required changes in the next couple days.
I’ll keep the signing of the commits in mind as well.

Thank you.

@jaiakash
Copy link
Member

Hi @rohansaibuddhi are you still on the issue?

@kramaranya
Copy link
Contributor

This has been resolved with #226
/close

@google-oss-prow google-oss-prow bot closed this Jan 21, 2026
@google-oss-prow
Copy link

@kramaranya: Closed this PR.

Details

In response to this:

This has been resolved with #226
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adopt external changelog generation tool