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
29 changes: 23 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,44 @@ on:
permissions:
contents: read

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v6
with:
python-version: "3.12"
- run: uv sync --all-packages --group dev
enable-cache: true
- run: uv sync --locked --all-packages --group dev
- run: uv run python -m unittest discover -s tests -v

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v6
with:
python-version: "3.12"
- run: python -m pip install --upgrade build
- run: python scripts/build_all.py
enable-cache: true
- run: uv sync --locked --all-packages --group dev
- run: uv run python scripts/build_all.py
- run: uv run twine check dist/*/*
- name: Resolve adapters against the locally built core wheel
run: >-
uv run python scripts/smoke_wheels.py dist
--mode local-adapter-resolution
- name: Resolve the one-click meta-package against all local wheels
run: >-
uv run python scripts/smoke_wheels.py dist
--mode local-meta-resolution
- uses: actions/upload-artifact@v4
with:
name: distributions
path: dist/**/*
if-no-files-found: error
retention-days: 7
110 changes: 70 additions & 40 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,64 +8,94 @@ on:
required: true
type: choice
options:
- automas-hsr
- automas-script-hsr
- automas-hsr-adapter-sra
- automas-hsr-adapter-m7a
version:
description: Exact version from the selected package pyproject.toml
required: true
type: string
push:
tags:
- "automas-hsr-v*"
- "automas-script-hsr-v*"
- "automas-hsr-adapter-sra-v*"
- "automas-hsr-adapter-m7a-v*"

permissions:
contents: read

concurrency:
group: publish-${{ github.ref }}-${{ inputs.package || 'tag' }}
cancel-in-progress: false

jobs:
publish-script-hsr:
name: Publish automas-script-hsr
if: inputs.package == 'automas-script-hsr'
build:
runs-on: ubuntu-latest
environment: pypi-script-hsr
permissions:
contents: read
id-token: write
outputs:
package: ${{ steps.release.outputs.package }}
environment: ${{ steps.release.outputs.environment }}
version: ${{ steps.release.outputs.version }}
artifact_name: ${{ steps.release.outputs.artifact_name }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
with:
python-version: "3.12"
- run: python -m pip install --upgrade build
- run: python -m build packages/automas_script_hsr --outdir dist
- uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist

publish-adapter-sra:
name: Publish automas-hsr-adapter-sra
if: inputs.package == 'automas-hsr-adapter-sra'
runs-on: ubuntu-latest
environment: pypi-adapter-sra
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
fetch-depth: 0
- uses: astral-sh/setup-uv@v6
with:
python-version: "3.12"
- run: python -m pip install --upgrade build
- run: python -m build packages/automas_hsr_adapter_sra --outdir dist
- uses: pypa/gh-action-pypi-publish@release/v1
enable-cache: true
- run: uv sync --locked --all-packages --group dev
- id: release
name: Resolve and validate release target
env:
EVENT_NAME: ${{ github.event_name }}
RELEASE_REF: ${{ github.ref }}
INPUT_PACKAGE: ${{ inputs.package }}
INPUT_VERSION: ${{ inputs.version }}
run: >-
uv run python scripts/release.py
--event-name "$EVENT_NAME"
--ref "$RELEASE_REF"
--package "$INPUT_PACKAGE"
--version "$INPUT_VERSION"
- name: Verify tag commit belongs to main
if: github.event_name == 'push'
run: git merge-base --is-ancestor "$GITHUB_SHA" origin/main
- run: uv run python -m unittest discover -s tests -v
- name: Build selected distribution
env:
PACKAGE_DIR: ${{ steps.release.outputs.package_dir }}
run: uv run python -m build "$PACKAGE_DIR" --outdir dist
- run: uv run twine check dist/*
- name: Metadata-only smoke test for the selected wheel
env:
PACKAGE: ${{ steps.release.outputs.package }}
run: >-
uv run python scripts/smoke_wheels.py dist
--mode metadata-only
--expected-package "$PACKAGE"
- uses: actions/upload-artifact@v4
with:
packages-dir: dist
name: ${{ steps.release.outputs.artifact_name }}
path: dist/*
if-no-files-found: error
retention-days: 7

publish-adapter-m7a:
name: Publish automas-hsr-adapter-m7a
if: inputs.package == 'automas-hsr-adapter-m7a'
publish:
needs: build
runs-on: ubuntu-latest
environment: pypi-adapter-m7a
environment:
name: ${{ needs.build.outputs.environment }}
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/download-artifact@v4
with:
python-version: "3.12"
- run: python -m pip install --upgrade build
- run: python -m build packages/automas_hsr_adapter_m7a --outdir dist
name: ${{ needs.build.outputs.artifact_name }}
path: dist
- uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
.venv/
uv.lock
dist/
**/build/
**/dist/
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
本仓库维护 AUTO-MAS 的 HSR 插件工作区。

- `packages/` 下每个目录是独立 Python distribution;项目名、公开 entry point 和包路径不得随意变更。
- `automas-hsr` 只负责一键安装核心包与两个引擎适配器,不包含运行时代码或插件 entry point。
- `automas-script-hsr` 是 HSR 编排和契约的唯一拥有者;SRA、三月七适配器只能依赖它,不能互相依赖。
- 插件通过稳定的 DTO 或 JSON 兼容字典跨包协作,不能将某个适配器的内部模型作为另一个包的契约。
- 代码使用 AUTO-MAS 主程序提供的 `app` 插件接口时,应保持与宿主兼容,不把宿主实现复制进本仓库。
Expand Down
Loading
Loading