概要
Discourse 用の堅牢な拡張機能を構築するには、プラグインまたはテーマコンポーネントに継続的インテグレーション (CI) を組み込むのが賢明です。これにより、エラーを早期に検出し、コードにバグが発生する可能性を低減できます。
GitHub Actions を使用してビルドとテストを自動化する CI ワークフローを設定することは、Discourse チームがすべてのコンポーネントで採用しているアプローチであり、こちらでも同じことをお勧めします。
セットアップ方法
GitHub Actions による自動ワークフローを追加するには、リポジトリのルートディレクトリに .github/workflows フォルダを作成する必要があります。
workflows フォルダ内には、GitHub Actions が実行する必要がある自動化処理のセットを定義できます。例えば、リンティングやテスト用の .yml ファイルなどが挙げられます。
プラグイン と テーマコンポーネント の両方用にテンプレートワークフローを作成しました。これらは、こちら にある「再利用可能なワークフロー」定義に接続されています。
テンプレートのスケルトンリポジトリでは、GitHub 上で Use this template ボタンをクリックすることで、テンプレートに基づいたプラグイン/テーマコンポーネントのリポジトリを作成できます。
あるいは、すでにプロジェクトがあり、そこにワークフローを追加したい場合は、関連するワークフローをリポジトリの .github/workflows/ フォルダにコピーするだけです。
プラグイン: discourse-plugin.yml
テーマおよびテーマコンポーネント: discourse-theme.yml
これらのテンプレートは、再利用可能なワークフローの特定のメジャーバージョンに固定されています。ワークフローに行った小さな改善は、自動的にあなたのテーマ/プラグインに反映されます。破壊的変更(例:新しいリンターを導入する)が発生した場合、再利用可能なワークフローのメジャーバージョンを上げ、新しいバージョンを指すようワークフローを更新する必要があります。
完成です! セットアップはこれで完了です。リポジトリにコミットを作成するか、PR を送るだけで、GitHub Actions がワークフローを自動検出し、ジョブの実行を開始します。
GitHub Actions は各テストの内訳を表示し、実行後にテストが合格したか失敗したかによって、
または
を表示します。
テストが失敗した場合、詳細をクリックすると何が失敗したかについての情報が得られ、コードに何が問題で何を修正する必要があるかの手がかりが得られるかもしれません。
独自のテストを追加する
プラグインおよびコンポーネントのテストを効果的に機能させるためには、プラグインまたはテーマコンポーネントのテストを書くことが重要です。
EmberJS を使用したフロントエンドテストの書き方については、以下の資料を参照してください:
- Write acceptance tests and component tests for Ember code in Discourse
- Introduction - Testing - Ember Guides
Rails で RSpec テストを書く詳細については、以下の資料を参照してください:
例
ご参考までに、堅牢なテストが統合されているプラグインとテーマコンポーネントの例をいくつか選んでみました:
| プラグイン / コンポーネント | クライアントサイドテスト | サーバーサイドテスト |
|---|---|---|
| Assign | ||
| Calendar | ||
| Reactions | ||
| Right Sidebar Blocks | ||
| Tag Icons | ||
| Table Builder |
このドキュメントはバージョン管理されています - 変更提案は GitHub 上 で行ってください。
