Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/manual-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ jobs:
run: |
set -euo pipefail
shopt -s nullglob
wheels=(fluxon_release/fluxon_ai-*.whl)
wheels=(fluxon_release/fluxon_py-*.whl)
if [[ "${#wheels[@]}" -ne 1 ]]; then
echo "Expected exactly one release-built wheel, found ${#wheels[@]}" >&2
exit 1
Expand Down Expand Up @@ -318,8 +318,8 @@ jobs:
tar -tzf fluxon_release.tar.gz > release-review/fluxon-release-files.txt
tar -xzf fluxon_release.tar.gz -C release-review/extracted
shopt -s nullglob
release_wheels=(release-review/extracted/fluxon_release/fluxon_ai-*.whl)
pypi_wheels=(release-review/pypi-wheel/fluxon_ai-*.whl)
release_wheels=(release-review/extracted/fluxon_release/fluxon_py-*.whl)
pypi_wheels=(release-review/pypi-wheel/fluxon_py-*.whl)
if [[ "${#release_wheels[@]}" -ne 1 || "${#pypi_wheels[@]}" -ne 1 ]]; then
echo "Expected exactly one release wheel and one validated PyPI wheel" >&2
exit 1
Expand Down Expand Up @@ -452,7 +452,7 @@ jobs:
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/project/fluxon-ai/
url: https://pypi.org/project/fluxon-py/
permissions:
actions: read
contents: read
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ Quick Start is the shortest path to try Fluxon. For formal installation, deploym
For a Linux x86_64 Python process that connects to an existing service plane, install the public distribution directly:

```bash
python3 -m pip install fluxon-ai
python3 -m pip install fluxon-py
```

The distribution installs the `fluxon_py` import package. Service-plane runtimes and the complete release bundle remain available from GitHub Releases.
Expand Down
2 changes: 1 addition & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ Fluxon FS 是一款面向 AI 数据与模型文件、兼容 `S3` 的高性能文
对于接入已有服务平面的 Linux x86_64 Python 进程,可以直接安装公开 distribution:

```bash
python3 -m pip install fluxon-ai
python3 -m pip install fluxon-py
```

该 distribution 安装的 import 包仍然是 `fluxon_py`。服务平面运行时和完整 release bundle 继续通过 GitHub Releases 提供。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## 产物

- `fluxon_release/fluxon_ai-*.whl`
- `fluxon_release/fluxon_py-*.whl`
- `fluxon_release/pylib_src.tar.gz`
- `fluxon_release/install.py`
- `fluxon_release/ext_images.tar.gz`
Expand All @@ -22,7 +22,7 @@ python3 setup_and_pack/pack_release.py --release-dir ./fluxon_release
- 默认输出到 `<repo_root>/fluxon_release/`
- 当前对外打包流程不要求手动传 `transport backend` 参数,直接使用默认命令即可
- `pack_release.py` 会自动串起 `setup_and_pack/pack_release_ext.py`
- Python wheel 和 PyO3 wheel 会先分别构建,再合并为顶层唯一的 `fluxon_ai-*.whl`
- Python wheel 和 PyO3 wheel 会先分别构建,再合并为顶层唯一的 `fluxon_py-*.whl`
- 核心包产物和外部运行时产物会一起落到同一个 release 目录

## 重新打包
Expand Down
6 changes: 3 additions & 3 deletions fluxon_doc_cn/dev_doc/开发者 - 4 - 发布 Release.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ release 只有一个手动入口:从 GitHub Actions 运行 `create_release_tag
| 本文覆盖 | 不覆盖 | 说明 |
|---|---|---|
| 通过 GitHub Actions 创建 release tag | 决定下一个版本号 | 版本策略由维护者决定 |
| 发布 GitHub Release 产物、`fluxon-ai` PyPI wheel 和 Quick Start Docker image | 其他 package index 或 image registry | 当前公开目的地是 GitHub、PyPI 和 Docker Hub |
| 发布 GitHub Release 产物、`fluxon-py` PyPI wheel 和 Quick Start Docker image | 其他 package index 或 image registry | 当前公开目的地是 GitHub、PyPI 和 Docker Hub |
| 产物确定性检查、只读 Codex 审核和目的地审批 | 功能测试或集成测试 | 发布路径不运行 main CI;Codex 输出也不是测试结果 |
| GitHub Pages 文档站入口 | 向远端机器 dispatch release | 远端部署属于 `deployment/manual_dispatch_release.py` |

Expand Down Expand Up @@ -92,15 +92,15 @@ Codex 可以指出不一致和证据缺口。它必须明确披露 main CI 被
| Job | Environment | 发布对象 | 凭据边界 |
|---|---|---|---|
| `publish-github-release` | `github-release` | `fluxon_release.tar.gz` 与 `fluxon_quick_start_<version>_docker_image.tar.gz` | 只有该 job 获得 `contents: write` |
| `publish-pypi` | `pypi` | 发布 workflow 现场构建并通过包契约校验的 `fluxon_ai-*.whl` | 只有该 job 获得 `id-token: write`,不使用 `PYPI_TOKEN` |
| `publish-pypi` | `pypi` | 发布 workflow 现场构建并通过包契约校验的 `fluxon_py-*.whl` | 只有该 job 获得 `id-token: write`,不使用 `PYPI_TOKEN` |
| `publish-docker-image` | `docker-image` | `hanbaoaaa/fluxon_quick_start:<version>` | Docker Hub 凭据只存在于该 environment |

三个 job 依赖同一 readiness review,彼此之间没有依赖。批准或重跑其中一个目的地不会串行化另外两个。

PyPI 准备阶段检查 tag 身份、默认分支历史、distribution 与版本、`cp38-abi3-manylinux_2_28_x86_64` wheel tag、`Requires-Python >=3.10`、文件大小、checksum 和 `twine check`。用户安装命令是:

```bash
python3 -m pip install fluxon-ai
python3 -m pip install fluxon-py
```

Docker job 会加载准确的受审 image archive,校验本地 image identity,再使用规范 Docker Hub repository 与 release version 重新打 tag,只 push 版本 tag,不更新 `latest`。
Expand Down
10 changes: 5 additions & 5 deletions fluxon_doc_cn/user_doc/用户 - 0 - 安装.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@

如果你要使用 Fluxon,通常会直接接触两类安装对象:

- `Fluxon` 核心安装包:统一的 `fluxon_ai-*.whl`、`pylib_src.tar.gz`、`install.py`、`fluxon_release.sha256`
- `Fluxon` 核心安装包:统一的 `fluxon_py-*.whl`、`pylib_src.tar.gz`、`install.py`、`fluxon_release.sha256`
- `etcd / greptime / TiKV` 运行时包:`ext_images.tar.gz`

如果你只是让 Python 业务进程接入已经存在的服务平面,通常只需要安装 `Fluxon` 核心包;如果你还要自己拉起 KV / MQ / FS 依赖的服务平面,则还需要准备 `etcd / greptime / TiKV` 运行时包。相关角色关系见 [架构和概念](./用户%20-%201%20-%20架构和概念.md)。

### 从 PyPI 安装 Python 包

如果 Python 业务进程接入的是已经存在的服务平面,可以直接安装 PyPI distribution `fluxon-ai`:
如果 Python 业务进程接入的是已经存在的服务平面,可以直接安装 PyPI distribution `fluxon-py`:

```bash
python3 -m pip install fluxon-ai
python3 -m pip install fluxon-py
```

distribution 名使用连字符,安装后的 Python import 路径仍然是:
Expand Down Expand Up @@ -42,7 +42,7 @@ https://github.com/<org>/fluxon/releases
```bash
tar xzf fluxon_release.tar.gz
cd fluxon_release
python3 -m pip install fluxon_ai-*.whl
python3 -m pip install fluxon_py-*.whl
```

#### 下载 `etcd / greptime / TiKV` 运行时包
Expand Down Expand Up @@ -88,7 +88,7 @@ tar xzf ext_images.tar.gz

| 文件 | 说明 |
|---|---|
| `fluxon_ai-*.whl` | 统一的 Fluxon Python 包,内含 PyO3 运行时 |
| `fluxon_py-*.whl` | 统一的 Fluxon Python 包,内含 PyO3 运行时 |
| `pylib_src.tar.gz` | Python 源码包 |
| `install.py` | release 运行时入口 |
| `fluxon_release.sha256` | 所有产物的 SHA256 校验文件 |
Expand Down
2 changes: 1 addition & 1 deletion fluxon_doc_cn/user_doc/用户 - 3 - KV-RPC接口.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Python 业务代码优先直接在代码里写 Python dict,并传给 `FluxonKv

- `etcd` 在 `127.0.0.1:2379`
- `greptime` HTTP 在 `127.0.0.1:34030`
- 当前 `python3` 所在环境已经安装统一的 `fluxon_ai-*.whl`;安装方式见 [用户 - 0 - 安装](./用户%20-%200%20-%20安装.md)
- 当前 `python3` 所在环境已经安装统一的 `fluxon_py-*.whl`;安装方式见 [用户 - 0 - 安装](./用户%20-%200%20-%20安装.md)

对应示例脚本:`examples/start_master_owner.py`

Expand Down
2 changes: 1 addition & 1 deletion fluxon_doc_cn/user_doc/用户 - 4 - MQ接口.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ MQ 用户进程的最小前置链路如下:

最小可运行示例脚本如下。MQ 复用的就是这条 KV 角色启动链路;这个脚本只启动 Fluxon 自己的角色,`etcd` / `greptime` 仍按服务平面文档单独启动:

- 当前 `python3` 所在环境已经安装统一的 `fluxon_ai-*.whl`;安装方式见 [用户 - 0 - 安装](./用户%20-%200%20-%20安装.md)
- 当前 `python3` 所在环境已经安装统一的 `fluxon_py-*.whl`;安装方式见 [用户 - 0 - 安装](./用户%20-%200%20-%20安装.md)

对应示例脚本:`examples/start_master_owner.py`

Expand Down
2 changes: 1 addition & 1 deletion fluxon_doc_cn/user_doc/用户 - 5 - FS接口.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ FS 用户进程的共享前置链路如下:

`examples/start_kv_and_fs_svc.py` 只启动 Fluxon 自己的角色。`etcd` / `greptime` 仍按服务平面文档单独启动;如果需要 `/ui/transfers/` 和预扫描,还要先启动 `transfer_state_store` 对应的 `pd` / `tikv`:

- 当前 `python3` 所在环境已经安装统一的 `fluxon_ai-*.whl`;安装方式见 [用户 - 0 - 安装](./用户%20-%200%20-%20安装.md)
- 当前 `python3` 所在环境已经安装统一的 `fluxon_py-*.whl`;安装方式见 [用户 - 0 - 安装](./用户%20-%200%20-%20安装.md)

这个脚本支持两种启动方式:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This page only covers how `setup_and_pack/pack_release.py` gathers the core inst

## Artifacts

- `fluxon_release/fluxon_ai-*.whl`
- `fluxon_release/fluxon_py-*.whl`
- `fluxon_release/pylib_src.tar.gz`
- `fluxon_release/install.py`
- `fluxon_release/ext_images.tar.gz`
Expand All @@ -22,7 +22,7 @@ python3 setup_and_pack/pack_release.py --release-dir ./fluxon_release
- The default output directory is `<repo_root>/fluxon_release/`
- The public packaging flow does not require a manual `transport backend` argument
- `pack_release.py` automatically chains into `setup_and_pack/pack_release_ext.py`
- The Python and PyO3 wheels are built separately, then merged into the single top-level `fluxon_ai-*.whl`
- The Python and PyO3 wheels are built separately, then merged into the single top-level `fluxon_py-*.whl`
- Core artifacts and external runtime artifacts are written into the same release directory

## Repackage When
Expand Down
6 changes: 3 additions & 3 deletions fluxon_doc_en/dev_doc/Developer - 4 - Publish a Release.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ The release has one manual entrypoint: run `create_release_tag` from GitHub Acti
| This page covers | This page does not cover | Why |
|---|---|---|
| Creating a release tag through GitHub Actions | Choosing the next version number | Version policy is a maintainer decision |
| Publishing GitHub Release assets, the `fluxon-ai` PyPI wheel, and the Quick Start Docker image | Other package indexes or image registries | The current public destinations are GitHub, PyPI, and Docker Hub |
| Publishing GitHub Release assets, the `fluxon-py` PyPI wheel, and the Quick Start Docker image | Other package indexes or image registries | The current public destinations are GitHub, PyPI, and Docker Hub |
| Deterministic artifact checks, read-only Codex review, and destination approvals | Functional or integration testing | The release path does not run main CI, and Codex output is not a test result |
| The GitHub Pages doc-site entrypoint | Dispatching a release onto remote machines | Remote deployment belongs to `deployment/manual_dispatch_release.py` |

Expand Down Expand Up @@ -92,15 +92,15 @@ Codex can identify inconsistencies and evidence gaps. It must disclose that main
| Job | Environment | Published object | Credential boundary |
|---|---|---|---|
| `publish-github-release` | `github-release` | `fluxon_release.tar.gz` and `fluxon_quick_start_<version>_docker_image.tar.gz` | This job alone receives `contents: write` |
| `publish-pypi` | `pypi` | The `fluxon_ai-*.whl` built in the release workflow and checked against the package contract | This job alone receives `id-token: write`; no `PYPI_TOKEN` is used |
| `publish-pypi` | `pypi` | The `fluxon_py-*.whl` built in the release workflow and checked against the package contract | This job alone receives `id-token: write`; no `PYPI_TOKEN` is used |
| `publish-docker-image` | `docker-image` | `hanbaoaaa/fluxon_quick_start:<version>` loaded from the reviewed image archive | Docker Hub credentials exist only in this environment |

The three jobs depend on the same readiness review and do not depend on one another. Approving or retrying one destination does not serialize the others.

The PyPI preparation checks tag identity, default-branch ancestry, distribution and version, the supported `cp38-abi3-manylinux_2_28_x86_64` wheel tag, `Requires-Python >=3.10`, file size, checksum, and `twine check`. Users install it with:

```bash
python3 -m pip install fluxon-ai
python3 -m pip install fluxon-py
```

The Docker job loads the exact reviewed archive, verifies its local image identity, retags it with the canonical Docker Hub repository and release version, and pushes only that versioned tag. It does not update `latest`.
Expand Down
10 changes: 5 additions & 5 deletions fluxon_doc_en/user_doc/User - 0 - Installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@

If you use Fluxon directly, you usually deal with two install bundles:

- Fluxon core artifacts: the unified `fluxon_ai-*.whl`, `pylib_src.tar.gz`, `install.py`, and `fluxon_release.sha256`
- Fluxon core artifacts: the unified `fluxon_py-*.whl`, `pylib_src.tar.gz`, `install.py`, and `fluxon_release.sha256`
- Runtime packages for `etcd / Greptime / TiKV`: `ext_images.tar.gz`

If your Python process only attaches to an existing service plane, you normally only need the Fluxon core package. If you also need to start the KV / MQ / FS service plane yourself, prepare the `etcd / Greptime / TiKV` runtime package as well. See [Architecture and Concepts](<./User - 1 - Architecture and Concepts.md>) for the role model.

### Install the Python Package from PyPI

If the Python process attaches to an existing service plane, install the `fluxon-ai` distribution directly from PyPI:
If the Python process attaches to an existing service plane, install the `fluxon-py` distribution directly from PyPI:

```bash
python3 -m pip install fluxon-ai
python3 -m pip install fluxon-py
```

The distribution name uses a hyphen; the installed Python import path remains:
Expand All @@ -38,7 +38,7 @@ https://github.com/<org>/fluxon/releases
```bash
tar xzf fluxon_release.tar.gz
cd fluxon_release
python3 -m pip install fluxon_ai-*.whl
python3 -m pip install fluxon_py-*.whl
```

#### Unpack `etcd / Greptime / TiKV`
Expand Down Expand Up @@ -80,7 +80,7 @@ Related docs:

| File | Description |
|---|---|
| `fluxon_ai-*.whl` | Unified Fluxon Python package with the PyO3 runtime embedded |
| `fluxon_py-*.whl` | Unified Fluxon Python package with the PyO3 runtime embedded |
| `pylib_src.tar.gz` | Python source bundle |
| `install.py` | Release runtime entrypoint |
| `fluxon_release.sha256` | SHA256 checksum file for all release artifacts |
Expand Down
2 changes: 1 addition & 1 deletion fluxon_doc_en/user_doc/User - 3 - KV and RPC Interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The minimal local startup example is `examples/start_master_owner.py`. It only s

- `etcd` at `127.0.0.1:2379`
- `Greptime` HTTP at `127.0.0.1:34030`
- the current Python environment already installed the unified `fluxon_ai-*.whl`
- the current Python environment already installed the unified `fluxon_py-*.whl`

### Minimal Role Startup Example

Expand Down
6 changes: 3 additions & 3 deletions fluxon_release/release_notes/v0.2.2.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ The documented single-node `rclone v1.60.1` comparison reports that FluxonFS led
## 🧪 CI, Packaging, and Release Safety

- Added rclone-based S3 end-to-end coverage to the virtual-node CI path.
- Added validated publication of the exact tested `fluxon-ai` wheel, including wheel-tag, Python-version, checksum, size, and `twine check` gates.
- Added validated publication of the release-built `fluxon-py` wheel, including wheel-tag, Python-version, checksum, size, and `twine check` gates.
- Added Codex-assisted CI failure analysis with bounded, read-only evidence collection.
- Added tag provenance that distinguishes an actual tag ref from a same-named branch and binds release artifacts to the tested commit.
- Added deterministic artifact checksums and a read-only Codex release-readiness report.
Expand All @@ -88,7 +88,7 @@ The SDK version and open-surface contract version are independent from the publi

## 📦 Release Artifacts

- PyPI: `fluxon-ai==0.2.2`.
- PyPI: `fluxon-py==0.2.2`.
- Docker Hub: `hanbaoaaa/fluxon_quick_start:0.2.2`.
- GitHub Release: `fluxon_release.tar.gz`.
- GitHub Release: `fluxon_quick_start_0.2.2_docker_image.tar.gz`.
Expand All @@ -109,7 +109,7 @@ The Docker publication does not update `latest`.
- #34 — run large-scale MQ coverage in GitHub Actions with bounded resources.
- #37 — add distributed owner SSD backing storage for Fluxon KV, VideoReader, benchmarks, and supporting lifecycle work.
- #46 — add rclone S3 integration coverage.
- #45 — publish the tested `fluxon-ai` wheel through PyPI trusted publishing; this path is now folded into the unified release workflow.
- #45 — publish the validated `fluxon-py` wheel through PyPI trusted publishing; this path is now folded into the unified release workflow.
- #48, #49, #51, #52 — expand and refine the public Fluxon overview and AI-native distributed-data-plane positioning.
- #47 — support communication ABI 9 and event-driven TCP reactors.
- #50 — add hybrid S3 writes, shared lease keepalive, cleanup ownership, and shutdown barriers.
Expand Down
2 changes: 1 addition & 1 deletion fluxon_test_stack/gitops/gitops.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ repos:
out_path = out_dir / "cluster_ssh_bootstrap.yaml"

# These wheels are required by examples/fluxon_deployer/cluster_ssh_bootstrap.py.
fluxon_wheels = sorted(glob.glob(str(workdir_root / "fluxon_release" / "fluxon_ai-*.whl")))
fluxon_wheels = sorted(glob.glob(str(workdir_root / "fluxon_release" / "fluxon_py-*.whl")))
fluxon_pyo3_wheels = sorted(glob.glob(str(workdir_root / "fluxon_release" / "fluxon_pyo3-*.whl")))
if len(fluxon_wheels) != 1:
raise RuntimeError(f"expected exactly one fluxon wheel, got: {fluxon_wheels}")
Expand Down
Loading
Loading