a2ui-project / a2ui-project/a2ui

Migrate Python SDK release process to Git-Tag-Driven Dynamic Versioning

オープン
#1,928 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
P2 python
主要言語
TypeScript
スター
16.4k
フォーク
1.3k
平均マージ
2日 13時間
マージ済み PR(30日)
134

説明

## Background

Currently, the a2ui Python SDK uses a manual version file approach where release versions are controlled by committing changes to `agent_sdks/python/a2ui_agent/src/a2ui/version.py` and/or `agent_sdks/python/a2ui_core/src/a2ui/core/version.py` before creating a Git tag.

While straightforward, this approach introduces several pain points:
- Merge Conflicts: Concurrent feature branches may experience conflicts when trying to update the version file or a static changelog.
- Dirty Git History: Every release requires metadata-only "version bump" commits.
- Complex Local Dev Testing: Generating accurate pre-release or development build numbers for testing in downstream applications is manual and error-prone.

We want to migrate to Git-Tag-First Dynamic Versioning. In this model, Git tags are the single source of truth. Build tools will dynamically infer and inject the version at build time using the repository's Git history (VCS).

## Release Workflow

| Phase | Version-file based | Git-Tag based |
| --- | --- | --- |
| **Source of Truth** | Hardcoded version in `version.py` | Git Tag (e.g. v1.2.0)
| **PR Process** | Must resolve version file conflicts on busy branches | No version file exists, zero PR merge conflict |
| **CI Build Trigger** | Direct push or merge of a version bump commit | Pushing a release tag |
| **Changelog** | Manually written or modified file | Auto-generated from Conventional Commits onto the GitHub Release Page |

## Implementation

- Update `pyproject.toml` to declare the version as dynamic and configure a VCS-based build backend (e.g. `hatchling` with `hatch-vcs`, or `setuptools` with `setuptools-scm`.
- Remove the hardcoded version files.
- Update the GitHub Action Release Workflow: Trigger the release workflow on tag creation (`refs/tags/v*`).
**Notes**: This step is currently being blocked because the release has to be executed manually because of OSS Exit Gate integration. The OSS Exit Gate team is working on supporting GitHub action integration. Once this is done, we can automate the release process to be triggered on tag creation.
- Integrate Automated Changelog Generation
- Configure GitHub Actions to automatically generate the changelog from commit history when publishing the GibHub Release.
- Optionally, introduce `git-cliff` or configure conventional-changelog rules.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

The issue involves migrating the Python SDK release process from static version files to dynamic versioning based on Git tags. Key files to examine are `agent_sdks/python/a2ui_agent/src/a2ui/version.py`, `agent_sdks/python/a2ui_core/src/a2ui/core/version.py`, and `pyproject.toml`. Research how to configure `hatch-vcs` or `setuptools-scm` for dynamic versioning, and understand the existing GitHub Actions release workflow. The work is blocked on OSS Exit Gate integration, so the immediate task is to prepare the build configuration and remove hardcoded version files, then wait for automation support.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
git, github-actions, python
領域
build-system, release, tooling
issue の種類
リファクタリング
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
明確に書かれている
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。