diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..2d45e72 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: Bug report +about: バグ報告 +title: "[Bug] " +labels: bug +--- + +## 概要 + +何が起きたか、簡潔に記述してください。 + +## 再現手順 + +1. +2. +3. + +## 期待した動作 + +## 実際の動作 + +## 環境 + +- devbase バージョン: (`devbase --version` の出力) +- OS: +- Docker / Docker Compose バージョン: +- Python バージョン: +- シェル: bash / zsh + +## 関連ログ・スクリーンショット + +``` +(必要に応じて貼り付け) +``` diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..2ca9e40 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: 機能追加・改善の提案 +title: "[Feature] " +labels: enhancement +--- + +## 背景・課題 + +どのような課題を解決したいか、なぜ必要かを記述してください。 + +## 提案内容 + +実現したい振る舞いや UI を具体的に記述してください。 + +## 代替案 + +検討した別のアプローチがあれば記述してください。 + +## 補足 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..ad59097 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,28 @@ +# Pull Request + +## 概要 + +この PR で何を変更したか、なぜその変更が必要かを簡潔に記述してください。 + +## 関連 Issue + +- Closes # + +## 変更点 + +- +- + +## 動作確認 + +- [ ] ローカルで `./bin/devbase --help` が正常に動作する +- [ ] 影響を受けるコマンドの主要シナリオを手動で確認した +- [ ] 必要に応じてドキュメント (`docs/`, `README.md`) を更新した +- [ ] CI が green である + +## スクリーンショット・ログ(任意) + +``` +``` + +## 補足 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f576c26 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,43 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + python-syntax: + name: Python syntax check + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Compile-check Python sources + run: python -m compileall -q lib bin + + lint: + name: Ruff lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: astral-sh/ruff-action@v3 + with: + args: "check --select=E9,F63,F7,F82 lib" + + shellcheck: + name: ShellCheck + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run ShellCheck on bin/ + uses: ludeeus/action-shellcheck@master + with: + scandir: ./bin + severity: error diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..04229bf --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +本プロジェクトの変更履歴を [Keep a Changelog](https://keepachangelog.com/ja/1.1.0/) の形式に沿って記録します。バージョン番号は [Semantic Versioning](https://semver.org/lang/ja/) に従います。 + +## [Unreleased] + +## [2.2.0] - 2026-04-20 + +OSS 化に伴う初回リリース。devbase は本バージョンより `devbasex` Organization 配下で公開されます。 + +### Added +- MIT License +- プラグインマーケットの概念導入。任意のレジストリを `devbase plugin repo add` で追加可能。 +- 公式サンプルレジストリ `devbasex/devbase-samples`(adminer / ai-plugins / devbase を収録)。 +- PHP 8.5 ベースの開発コンテナ(`containers/php85`)。 +- スナップショットの差分回数ベースの世代管理。 +- `GIT_HOST` 環境変数による Git ホストの切り替えサポート。 + +### Changed +- `DEFAULT_OFFICIAL_REGISTRY` を `devbasex/devbase-samples.git` に変更。 +- README / docs 内のリポジトリ参照を `devbasex/devbase` に更新。 +- ドキュメント体系を `docs/user`, `docs/plugin-dev`, `docs/developer` に再編。 + +### Removed +- 「公式レジストリ」固定の概念を廃止。各レジストリは対等な扱いとなる。 + +[Unreleased]: https://github.com/devbasex/devbase/compare/v2.2.0...HEAD +[2.2.0]: https://github.com/devbasex/devbase/releases/tag/v2.2.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..3afac85 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,52 @@ +# Contributing to devbase + +devbase へのコントリビューションを歓迎します。バグ報告、機能提案、ドキュメント改善、コード変更のいずれも受け付けています。 + +## 始める前に + +- バグ報告・機能提案は [GitHub Issues](https://github.com/devbasex/devbase/issues) にお願いします。 +- 大きな変更を加える場合は、事前に Issue を立てて方針を相談してください。 +- 既存の Issue・PR と内容が重複していないか確認してください。 + +## 開発フロー + +1. リポジトリを fork し、作業用ブランチを切ります。 + ```bash + git clone https://github.com//devbase.git + cd devbase + git checkout -b feature/ + ``` +2. 変更を加え、ローカルで動作確認します。 +3. コミットし、自分の fork に push します。 +4. `devbasex/devbase` の `main` に対して Pull Request を作成します。 + +`main` への直接 push は禁止されています。すべての変更は PR 経由で取り込まれます。 + +## コミットメッセージ + +日本語または英語のいずれでも構いません。1 行目には変更の種別と要約を簡潔に記述してください。 + +例: + +``` +追加: PHP 8.5 ベースの開発コンテナ +修正: スナップショット世代管理のオフバイワン +``` + +## コーディング規約 + +- Python: PEP 8 に準拠。CLI 実装は `lib/devbase/` 配下にあります。 +- Shell: Bash / Zsh の双方で動作することを確認してください。 +- ドキュメントは `docs/` 配下に配置し、図表は Mermaid または PlantUML を使用してください(ASCII アートは原則使用しない)。 + +詳細は [docs/developer/contributing.md](docs/developer/contributing.md) を参照してください。 + +## Pull Request + +- PR テンプレートに沿って、変更内容と動作確認手順を記載してください。 +- レビュー指摘があった場合は、追加コミットで対応します(force push は避けてください)。 +- CI が通っていることを確認してから merge ready にしてください。 + +## ライセンス + +コントリビュートいただいた変更は、本プロジェクトの [MIT License](LICENSE) のもとで配布されることに同意したものとみなします。 diff --git a/README.md b/README.md index 4760d85..84a8017 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,19 @@ devbase login # コンテナにログイン ## Plugin -devbaseのプロジェクトはPluginとして管理されます。Pluginは外部のGitリポジトリに格納され、リポジトリ登録後に`devbase plugin install`でインストールします。 +devbaseのプロジェクトはPluginとして管理されます。Pluginは**プラグインレジストリ**(複数の Plugin を束ねた Git リポジトリ)から `devbase plugin install` でインストールします。 + +### 主なプラグインレジストリ + +| レジストリ | Visibility | 役割 | +|-----------|-----------|------| +| [`devbasex/devbase-samples`](https://github.com/devbasex/devbase-samples) | public | サンプルレジストリ(`devbase init` 時に自動登録) | +| [`takemi-ohama/devbase-ext`](https://github.com/takemi-ohama/devbase-ext) | private | 個人プロジェクト向けプラグインマーケット | +| [`volareinc/devbase-ext`](https://github.com/volareinc/devbase-ext) | private | volareinc 社内プロジェクト向けプラグインマーケット | + +詳細は [プラグインレジストリ](docs/user/plugin-registries.md) を参照してください。 + +### 操作例 ```bash # リポジトリ登録(GitHubショートハンド対応) @@ -95,6 +107,7 @@ devbaseのコマンドは4つのグループにまとめられています。 |-------------|------| | [はじめに](docs/user/getting-started.md) | 前提条件、初回セットアップ、日常ワークフロー | | [CLIリファレンス](docs/user/cli-reference.md) | 全コマンドの構文・オプション・使用例 | +| [プラグインレジストリ](docs/user/plugin-registries.md) | 公開・社内レジストリの一覧と追加方法 | | [環境変数ガイド](docs/user/environment-variables.md) | 3レベル構造、コレクター、ソース同期 | | [コンテナ操作ガイド](docs/user/container-operations.md) | ライフサイクル、並行開発、ボリューム構造 | | [スナップショットガイド](docs/user/snapshot-guide.md) | 増分バックアップ、世代管理、復元手順 | diff --git a/docs/README.md b/docs/README.md index 6d1c6a0..e29532b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -44,6 +44,7 @@ graph TD |-------------|------| | [はじめに](user/getting-started.md) | 前提条件、初回セットアップ、日常ワークフロー | | [CLI リファレンス](user/cli-reference.md) | 全コマンドの構文・オプション・使用例 | +| [プラグインレジストリ](user/plugin-registries.md) | 公開・社内レジストリの一覧と追加方法 | | [環境変数ガイド](user/environment-variables.md) | 3レベル構造、コレクター、ソース同期 | | [コンテナ操作ガイド](user/container-operations.md) | ライフサイクル、並行開発、ボリューム構造 | | [スナップショットガイド](user/snapshot-guide.md) | 増分バックアップ、世代管理、復元手順 | @@ -90,6 +91,7 @@ docs/ ├── user/ ← 利用者向け │ ├── getting-started.md ← はじめに │ ├── cli-reference.md ← CLI リファレンス +│ ├── plugin-registries.md ← プラグインレジストリ │ ├── environment-variables.md ← 環境変数ガイド │ ├── container-operations.md ← コンテナ操作ガイド │ ├── snapshot-guide.md ← スナップショットガイド diff --git a/docs/user/getting-started.md b/docs/user/getting-started.md index 017fff2..f8b5850 100644 --- a/docs/user/getting-started.md +++ b/docs/user/getting-started.md @@ -52,6 +52,8 @@ source ~/.zshrc ### 4. プラグインリポジトリの登録 +`devbase init` を実行すると、サンプルレジストリ [`devbasex/devbase-samples`](https://github.com/devbasex/devbase-samples) が自動登録されます。追加のレジストリは以下のように登録します。 + ```bash devbase plugin repo add user/repo ``` @@ -63,6 +65,15 @@ GitHub のショートハンド(`user/repo`)形式で指定できます。 devbase plugin repo list ``` +主な追加候補レジストリ: + +| レジストリ | 用途 | +|-----------|------| +| `takemi-ohama/devbase-ext` | 個人プロジェクト向けプラグインマーケット(private) | +| `volareinc/devbase-ext` | volareinc 社内プロジェクト向けプラグインマーケット(private) | + +詳細・追加方法は [プラグインレジストリ](plugin-registries.md) を参照してください。 + ### 5. プラグインのインストール ```bash diff --git a/docs/user/plugin-registries.md b/docs/user/plugin-registries.md new file mode 100644 index 0000000..93b3886 --- /dev/null +++ b/docs/user/plugin-registries.md @@ -0,0 +1,87 @@ +# プラグインレジストリ + +devbase のプラグインは **プラグインレジストリ** を通じて配布されます。レジストリは `plugin.yml` を含む Git リポジトリの集合体で、`devbase plugin repo add` で任意のレジストリを追加できます。 + +## レジストリの考え方 + +devbase v2.2.0 以降、「公式レジストリ」固定の概念は廃止されました。すべてのレジストリは対等な立場で扱われ、ユーザーが自分の用途に合わせてレジストリを組み合わせて使います。 + +- 初回インストール時には `devbasex/devbase-samples`(サンプルレジストリ)が自動登録されます。 +- 追加のレジストリは `devbase plugin repo add /` で登録します(GitHub ショートハンド対応)。 +- 完全な URL(`https://github.com/...`、SSH 形式)も指定可能です。 + +## 公開レジストリ + +### devbasex/devbase-samples(サンプルレジストリ) + +- URL: +- 役割: 初めて devbase を使うユーザーがすぐに試せる汎用ツールを収録。 +- 主な収録プラグイン: + - `adminer` -- DB 管理ツール + - `ai-plugins` -- Claude Code プラグインマーケットプレイス開発環境 + - `devbase` -- devbase 本体の開発環境 + +`devbase init` 実行時に自動で登録されます。 + +## プラグインマーケット(追加登録向け) + +`devbasex/devbase` のプラグインマーケットとして利用できる公開・非公開レジストリです。アクセス権を持つユーザーは `devbase plugin repo add` で追加してください。 + +### takemi-ohama/devbase-ext + +- URL: +- Visibility: private +- 役割: 個人プロジェクト向けプラグインを収録。 +- 追加方法: + ```bash + devbase plugin repo add takemi-ohama/devbase-ext + ``` + +### volareinc/devbase-ext + +- URL: +- Visibility: private +- 役割: volareinc 社内プロジェクト向けプラグインを収録(carmo 系プロジェクト等)。 +- 追加方法: + ```bash + devbase plugin repo add volareinc/devbase-ext + ``` + +> private リポジトリにアクセスするには、Git の認証(HTTPS のクレデンシャル、または SSH 鍵)が事前に設定されている必要があります。 + +## レジストリ操作コマンド + +```bash +# 登録 +devbase plugin repo add / +devbase plugin repo add https://github.com//.git + +# 一覧 +devbase plugin repo list + +# 削除 +devbase plugin repo remove + +# 同期(最新化) +devbase plugin repo sync +``` + +## 自前レジストリの作成 + +独自のプラグインレジストリを作成する手順は [プラグイン開発クイックスタート](../plugin-dev/quickstart.md) を参照してください。レジストリは以下の構造を持つ Git リポジトリです。 + +``` +/ +├── registry.yml # レジストリメタデータ +├── / +│ ├── plugin.yml +│ └── compose.yml +└── ... +``` + +## 関連ドキュメント + +- [はじめに](getting-started.md) +- [CLI リファレンス](cli-reference.md) -- `plugin repo` サブコマンドの詳細 +- [プラグイン開発クイックスタート](../plugin-dev/quickstart.md) +- [plugin.yml リファレンス](../plugin-dev/plugin-yml-reference.md)