简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

モジュール商店への公開ガイド

ErisPulse モジュール商店に開発したモジュールやアダプタを公開し、他のユーザーが簡単に発見してインストールできるようにしましょう。

モジュール商店の概要

ErisPulse モジュール商店は、集中管理されたモジュール登録表です。ユーザーは CLI ツールを使用して、コミュニティが提供するモジュールやアダプタを閲覧、検索、インストールできます。

閲覧と発見

# リモートに利用可能なすべてのパッケージをリスト表示
epsdk list-remote

# モジュールのみ表示
epsdk list-remote -t modules

# アダプタのみ表示
epsdk list-remote -t adapters

# リモートパッケージリストを強制的に更新
epsdk list-remote -r

また、ErisPulse 公式サイトにアクセスして、オンラインでモジュール商店を閲覧することもできます。

提出可能なタイプ

タイプ 説明 エントリポイントのグループ
モジュール (Module) ロボットの機能拡張、ビジネスロジックの実装 erispulse.module
アダプタ (Adapter) 新しいメッセージプラットフォームへの接続 erispulse.adapter

速攻公開

公開プロセスは以下の3ステップで完了します:プロジェクトの設定 → PyPI への公開 → モジュール商店への登録。

1. pyproject.toml の設定

プロジェクトディレクトリに pyproject.toml、README.md を含め、タイプに応じて entry-points を設定してください。

モジュール

[project]
name = "ErisPulse-MyModule"
version = "1.0.0"
description = "モジュールの機能説明"
requires-python = ">=3.10"
license = { text = "MIT" }
authors = [ { name = "yourname" } ]
dependencies = [
    "ErisPulse>=2.0.0",
]

[project.entry-points."erispulse.module"]
"MyModule" = "MyModule:Main"

アダプタ

[project]
name = "ErisPulse-MyAdapter"
version = "1.0.0"
description = "アダプタの機能説明"
requires-python = ">=3.10"

[project.entry-points."erispulse.adapter"]
"myplatform" = "MyAdapter:MyAdapter"

注意:パッケージ名は ErisPulse- で始めるのが推奨です。エントリポイントのキー名(例:"MyModule")は、SDK 内でのモジュールのアクセス名として使用されます。

2. PyPI への公開

# ビルド + 公開(PyPI アカウントが必要)
pip install build twine
python -m build
python -m twine upload dist/*

公開が成功したら、インストールを確認します:

pip install ErisPulse-MyModule

3. モジュール商店への登録

ErisPulse 模块商店にアクセスし、「モジュールを登録」をクリックして、ログイン後、モジュール情報を入力してください。

サポートされているログイン方法:GitHub、Codeberg、云湖、いずれかを選択してください。

入力のポイント:

登録後、即座に有効になり、ユーザーはモジュールソースからインストールできます。モジュールは「未検証」と表示され、メンテナの審査が通ると「検証済み」に変わります。

検証ステータスについて:

  • 「未検証」は公式の審査がまだ行われていないことを意味し、モジュールに問題があるわけではありません
  • ユーザーが epsdk install で未検証モジュールをインストールする際、リスク警告が表示され、確認後にインストールを進めることができます

4. 公開済みモジュールの管理

モジュール商店で「モジュールを登録」をクリックし、ログイン後、「私のモジュール」タブに切り替えると、以下のことができます:

新しく登録したモジュールは、「私のモジュール」リストに表示されるまで数分かかる場合があります。

公開済みモジュールの更新

  1. pyproject.toml の version を更新
  2. 再びビルドしてアップロード:python -m build && python -m twine upload dist/*
  3. モジュール商店は自動的に PyPI 上の最新バージョンを同期します

ユーザーは epsdk upgrade MyModule でアップグレードできます。

公開前のチェックリスト

PyPI に送信する前に、以下の項目を1つずつ確認してください:

コード品質

兼容性

設定

ドキュメント

公開

開発モードでのテスト

正式公開前に、ローカルで編集可能なモードでテストできます:

epsdk install -e /path/to/MyModule
# または
pip install -e /path/to/MyModule

一般的な質問

パッケージ名は ErisPulse- で始める必要がありますか?

必須ではありませんが、強く推奨します。これにより、ユーザーが PyPI 上で ErisPulse エコシステムのパッケージを識別しやすくなります。

1つのパッケージで複数のモジュールを登録できますか?

できます。entry-points に複数のキーと値を設定できます:

[project.entry-points."erispulse.module"]
"ModuleA" = "MyPackage:ModuleA"
"ModuleB" = "MyPackage:ModuleB"

審査にはどのくらい時間がかかりますか?

通常 1〜3 営業日で完了します。モジュール商店の「私のモジュール」で検証ステータスを確認できます。

Docker イメージによるアプリケーションの配布

PyPI に公開するのに適さないアプリケーション(例:プライベート依存、事前設定環境が必要な場合)は、GitHub Container Registry (GHCR) を使って Docker イメージを公開し、他のユーザーが docker pull でワンクリックで起動できるようにすることができます。

適用場面

1. Dockerfile の作成

ErisPulse 公式イメージをベースに、あなたのモジュールを追加するだけです:

FROM erispulse/erispulse:latest

LABEL org.opencontainers.image.title="ErisPulse-MyModule" \
      org.opencontainers.image.description="モジュールの説明" \
      org.opencontainers.image.url="https://github.com/yourname/ErisPulse-MyModule" \
      org.opencontainers.image.source="https://github.com/yourname/ErisPulse-MyModule"

COPY pyproject.toml README.md ./
COPY MyModule/ ./MyModule/

RUN uv pip install --system -e .

モジュールに追加のシステム依存(例:SSHクライアントなど)が必要な場合は、RUN uv pip install の後に追加します:

RUN apt-get update && apt-get install -y --no-install-recommends \
    openssh-client \
    && rm -rf /var/lib/apt/lists/*

erispulse/erispulse:latest には ErisPulse、ErisPulse-Dashboard、Pythonランタイム、uv が含まれており、再びインストールする必要はありません。

2. GitHub Actions ワークフローの作成

.github/workflows/docker-publish.yml に作成します:

name: Docker イメージの公開

on:
  workflow_dispatch:
  push:
    branches:
      - main
    tags:
      - "v*"

permissions:
  contents: read
  packages: write

env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository_owner }}/my-bot

jobs:
  docker-publish:
    runs-on: ubuntu-latest

    steps:
      - name: コードをチェックアウト
        uses: actions/checkout@v4

      - name: QEMU のセットアップ (マルチアーキテクチャ対応)
        uses: docker/setup-qemu-action@v3

      - name: Docker Buildx のセットアップ
        uses: docker/setup-buildx-action@v3

      - name: GitHub Container Registry にログイン
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Docker のメタデータを取得
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
          tags: |
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=raw,value=latest

      - name: Docker イメージをビルドしてプッシュ
        uses: docker/build-push-action@v6
        with:
          context: .
          file: ./Dockerfile
          platforms: linux/amd64,linux/arm64
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          cache-from: type=gha
          cache-to: type=gha,mode=max

GITHUB_TOKEN は GitHub Actions によって自動的に提供されるため、手動でキーを作成する必要はありません。

3. ビルドの起動

コードをプッシュするか、タグを打つことで自動的にビルドされます:

# main ブランチにプッシュして起動
git push origin main

# またはタグを打って起動
git tag v1.0.0
git push origin v1.0.0

GitHub リポジトリの Actions ページから手動で起動することもできます。

4. イメージを公開に設定

GHCR イメージはデフォルトで private です。他のユーザーがログインなしでプルできるようにするには、GitHub で公開に設定する必要があります:

  1. リポジトリにアクセス → Packages → 対応するパッケージをクリック
  2. Package settings → Danger Zone → Change visibility → Public

5. ユーザーの使用

ビルドが完了したら、ユーザーは docker run で1行で起動できます:

docker run -d \
  --name my-bot \
  -p 8000:8000 \
  -v $(pwd)/config:/app/config \
  -e TZ=Asia/Shanghai \
  -e ERISPULSE_DASHBOARD_TOKEN=your-token \
  --restart unless-stopped \
  ghcr.io/<your-username>/my-bot:latest

または docker-compose.yml を使用:

services:
  my-bot:
    image: ghcr.io/<your-username>/my-bot:latest
    container_name: my-bot
    ports:
      - "8000:8000"
    volumes:
      - ./config:/app/config
    environment:
      - TZ=Asia/Shanghai
      - ERISPULSE_DASHBOARD_TOKEN=${ERISPULSE_DASHBOARD_TOKEN:-}
    restart: unless-stopped

Docker Hub への同時公開

ワークフローを拡張して、ログイン手順の前に Docker Hub にログインし、images に Docker Hub アドレスを追加します:

      - name: Docker Hub にログイン
        uses: docker/login-action@v3
        with:
          registry: docker.io
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Docker のメタデータを取得
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            docker.io/<your-dockerhub-username>/my-bot
            ghcr.io/${{ github.repository_owner }}/my-bot

DOCKERHUB_USERNAME と DOCKERHUB_TOKEN は、リポジトリの Settings → Secrets に追加する必要があります。

Docker イメージ vs PyPI 公開

特性 Docker イメージ (GHCR) PyPI 公開
分布方法 docker pull でワンクリック実行 pip install + 手動設定
適用範囲 完全なアプリケーション/ソリューション 単一モジュール/アダプタ
プライベート依存 天然にサポート プライベート PyPI ソースが必要
モジュール商店 不適切 モジュール商店に登録可能
マルチアーキテクチャ amd64/arm64 をサポート アーキテクチャに依存しない

両方の方法は互いに矛盾しません。モジュール商店に PyPI でモジュールを公開すると同時に、GHCR でワンクリック可能な Docker イメージを提供することも可能です。