概要
Discourse 用の堅牢な拡張機能を作成する際は、プラグインやテーマコンポーネントに継続的インテグレーション(CI)を組み込むことが賢明です。これにより、早期にエラーを検出し、コード内のバグ発生リスクを軽減できます。
GitHub Actions を使用して CI ワークフローを設定し、ビルドとテストを自動化する方法は、Discourse チームがすべてのコンポーネントで採用しているアプローチであり、皆様にも同様の対応をお勧めします。
設定方法
GitHub Actions による自動検出ワークフローを追加するには、リポジトリのルートディレクトリに .github/workflows フォルダを作成する必要があります。
workflows フォルダ内では、GitHub Actions が実行する一連の自動化を定義できます。例えば、リンティングやテスト用の .yml ファイルなどが該当します。
プラグイン と テーマコンポーネント の両方に対応したテンプレートワークフローを作成しましたので、ご活用ください。これらは、以下の「再利用可能なワークフロー」定義に接続されています:こちら。
テンプレートとなるスケルトンリポジトリでは、GitHub 上で このテンプレートを使用 ボタンをクリックすることで、テンプレートに基づいたプラグインまたはテーマコンポーネントのリポジトリを作成できます。
あるいは、既にプロジェクトをお持ちでワークフローを追加したい場合は、必要なワークフローファイルをリポジトリの .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 でお寄せください。
