Files
4554a7693c feat(ci): automate release process (#3536)
* feat(release): Add workflows for automated release process and version checks

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

feat(release): Implement automated release process with changelog generation

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

fix lint

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

enhance tag validation and branch creation

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

fix: Add 'area/release' to ignored labels in PR title check

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

feat(release): Enhance release workflows with manual trigger and image build steps

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

feat(release): Add PyPI API token for publishing packages

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

feat(release): Update concurrency settings in publish-helm-charts workflow and upgrade git-cliff-action version

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

feat(release): Update git-cliff-action args to include --unreleased option

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

refactor: reorganize release workflow to generate changelog before GitHub release

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

feat(release): Update GitHub release action to remove changelog prepending and simplify release name

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

feat(release): Refactor GitHub release job to integrate changelog generation and simplify workflow

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

feat(release): create_branch_and_tag job to create_branch and streamline tagging process

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

rebase commit

Signed-off-by: krishna-kg732 <[email protected]>

fix: update release branch naming to use major.minor version format

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

fix endline

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

feat(release): update README with upstream tag fetching instructions

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

Release v2.2.2

Signed-off-by: krishna-kg732 <[email protected]>

Revert "Release v2.2.2"

chore: configure TestPyPI publishing for fork testing

feat: split changelog by release line

Signed-off-by: Krishna Gupta <[email protected]>

chore:removed the monoloith CHANGELOG.md

Signed-off-by: Krishna Gupta <[email protected]>

chore: capitalize Changelog file name

Signed-off-by: krishna-kg732 <[email protected]>

chore: revert fork testing config

Signed-off-by: krishna-kg732 <[email protected]>

chore:latest minor release support updated

Signed-off-by: Krishna Gupta <[email protected]>

chore:resolve changelog casing conflict and restore correct file

Signed-off-by: Krishna Gupta <[email protected]>

chore: resolve git casing conflict

Signed-off-by: Krishna Gupta <[email protected]>

feat: split changelog by release line

Signed-off-by: Krishna Gupta <[email protected]>

chore: capitalize Changelog file name

Signed-off-by: krishna-kg732 <[email protected]>

chore:latest minor release support updated

Signed-off-by: Krishna Gupta <[email protected]>

chore: remove duplicate lowercase changelog file

Signed-off-by: krishna-kg732 <[email protected]>

* Chore:remove the Test release changeLog update

Signed-off-by: krishna-kg732 <[email protected]>

* Potential fix for pull request finding (fix by copilot)

Signed-off-by: Krishna Gupta <[email protected]>

* chore:address review comments

Signed-off-by: Krishna Gupta <[email protected]>

* chore:run pip-compile

Signed-off-by: Krishna Gupta <[email protected]>

* chore: address review

Signed-off-by: Krishna Gupta <[email protected]>

* fix(release): wait for artifact publishing before GitHub release

Signed-off-by: Krishna Gupta <[email protected]>

* refactor(release): delete release.sh, inline make release, and move asset updates to release workflow

Signed-off-by: Krishna Gupta <[email protected]>

* chore(ci): align release workflow and cliff.toml with SDK conventions

Signed-off-by: Krishna Gupta <[email protected]>

* chore: sync requirements lockfiles

Signed-off-by: Krishna Gupta <[email protected]>

* chore: added a new create_tag job and rebased to pass ci

Signed-off-by: Krishna Gupta <[email protected]>

* chore: regenerate lockfiles with Python 3.12 to fix CI

Signed-off-by: Krishna Gupta <[email protected]>

* chore: retrigger CI

Signed-off-by: Krishna Gupta <[email protected]>

* chore : address PR review

Signed-off-by: Krishna Gupta <[email protected]>

---------

Signed-off-by: krishna-kg732 <[email protected]>
Signed-off-by: Krishna Gupta <[email protected]>
Co-authored-by: milinddethe15 <[email protected]>

Co-authored-by: Hanzo Dev <[email protected]>
2026-06-11 19:59:37 +01:00

95 lines
3.1 KiB
Markdown

# Trainer
Distributed model training operator (PyTorch, TensorFlow, MPI, XGBoost).
A brand-neutral fork in the [hanzo-ml](https://github.com/hanzo-ml)
organization — the open-source ML lifecycle estate. Branding is
consumed at runtime from a brand package via the
[`@<org>/brand`](#brand-package) contract; the same code deploys under
any white-label brand with zero source changes.
## Brand package
This fork imports brand configuration from a runtime brand package
following the contract used across the open-source ML estate. Set
`BRAND_PACKAGE` to the npm package name; the fork's frontend (where
applicable) calls `loadBrand()` at boot to hydrate the singleton from
that package's `brand.json`.
Available brand packages:
| Package | Brand |
|---|---|
| `@hanzo/brand` | default / Hanzo AI |
| `@luxfi/brand` | Lux Finance |
| `@zooai/brand` | Zoo Labs |
| `@osage/brand` | Osage |
| `@parsdao/brand` | Pars DAO |
| `@cyrusdao/brand` | Cyrus DAO |
| `@migaprotocol/brand` | Miga Protocol |
| `@vccross/brand` | VC Cross |
| `@mlc/brand` | MLC |
| `@zenlm/brand` | Zen LM |
Or any custom reseller package conforming to the same schema.
## Multi-tenant via IAM
Every request carries a JWT. The brand package's `iam` block specifies:
- `issuer` — JWT issuer URL
- `jwksUrl` — JWKS endpoint
- `tenantClaim` — JWT claim with the org/tenant ID (default `org_id`)
- `tenantHeader` — HTTP header that propagates the validated tenant
ID (default `X-Org-Id`)
The tenant ID scopes all storage, queries, and resource ownership.
Cross-tenant access is forbidden by default.
## Quick start (reseller deployment)
```bash
export BRAND_PACKAGE="@<your-org>/brand" # e.g. @luxfi/brand
```
The frontend (this fork's case: `pipelines` ships the React DAG UI;
the other 7 are read-only reference forks) loads the brand at boot.
The backend reads the brand package's `iam` block for JWKS + tenant
configuration.
## Role
Read-only reference for the Rust operator's `TrainingJob` reconciler.
The canonical control plane for the ML lifecycle estate is the Rust
operator at [`hanzoai/operator`](https://github.com/hanzoai/operator).
See [HIP-0109](https://github.com/hanzoai/HIPs/blob/main/HIPs/hip-0109-hanzo-ml-cloud-toolkit.md)
for the lifecycle CRD set.
## Upstream sync
This fork stays current with upstream via the GitHub merge-upstream
API. No upstream code is modified in this fork; only the 5 markdown
files at root are added.
```bash
gh api -X POST /repos/hanzo-ml/trainer/merge-upstream \
-f branch=master
```
See [UPSTREAM_README.md](./UPSTREAM_README.md) for the original
project documentation.
## License
Apache-2.0. See [NOTICE](./NOTICE) for attribution.
## See also
- [DESIGN.md](./DESIGN.md) — design system reference (mirrors the brand
package's design spec)
- [BRAND.md](./BRAND.md) — brand package contract and reseller guide
- [MULTI_TENANT.md](./MULTI_TENANT.md) — tenant isolation contract
- [HANZO_CHANGES.md](./HANZO_CHANGES.md) — divergence from upstream
- [HIP-0109 Hanzo ML Cloud Toolkit](https://github.com/hanzoai/HIPs/blob/main/HIPs/hip-0109-hanzo-ml-cloud-toolkit.md)