GitHub Actions を使用した継続的インテグレーションのセットアップ

:mag: 概要

Discourse の堅牢な拡張機能を構築するには、プラグインまたはテーマコンポーネントに継続的インテグレーション (CI) を含めることが賢明です。これにより、早期にエラーを検出し、コードのバグの可能性を減らすことができます。

ビルドとテストを自動化するために GitHub Actions を使用した CI ワークフローの設定は、Discourse チームがすべてのコンポーネントで使用しているアプローチであり、皆様も同様に行うことをお勧めします。

:gear: 設定方法

GitHub Actions が検出するための自動ワークフローを追加するには、リポジトリのルート ディレクトリに .github/workflows フォルダを作成する必要があります。

workflows フォルダ内では、GitHub Actions が実行する必要のある一連の自動化を定義できます。たとえば、これらはリンティングやテスト用の .yml ファイルになります。

プラグインとテーマコンポーネントの両方について、テンプレートワークフローを作成しました。これらは、こちら の「再利用可能なワークフロー」定義に接続されています。

テンプレートのスケルトン リポジトリでは、GitHub で「このテンプレートを使用」ボタンをクリックして、テンプレートに基づいたプラグイン/テーマコンポーネント リポジトリを作成できます。

または、既にワークフローを追加したいプロジェクトがある場合は、関連するワークフローをリポジトリの .github/workflows/ フォルダにコピーするだけです。

:electric_plug: プラグイン: discourse-plugin.yml

:jigsaw: テーマとテーマコンポーネント: discourse-theme.yml

:point_up: これらのテンプレートは、再利用可能なワークフローの特定のメジャー バージョンにロックされています。ワークフローに加える小さな改善は、テーマ/プラグインに自動的に反映されます。破壊的な変更 (例: 新しいリンターの導入) の場合は、再利用可能なワークフローのメジャー バージョンを更新し、ワークフローを新しいバージョンを指すように更新する必要があります。

:tada: 完成です!設定は完了です。リポジトリにコミットまたはプルリクエスト (PR) を作成するだけで、GitHub Actions がワークフローを自動検出し、ジョブの実行を開始します。

GitHub Actions は、各テストの内訳を表示し、実行後にテストが合格したか失敗したかに応じて、:white_check_mark: または :x: を示します。

テストが失敗した場合、詳細をクリックすると、何が失敗したかについての情報が得られ、コードの間違いや修正が必要な箇所の手がかりが得られる場合があります。

例を見る

:white_check_mark: 独自のテストを追加する

プラグインやコンポーネントのテストが効果的に機能するには、プラグインまたはテーマコンポーネントのテストを作成することが重要です。

EmberJS を使用したフロントエンド テストの作成方法の詳細については、以下を参照してください。

Rails を使用した RSpec テストの作成方法の詳細については、以下を参照してください。

:bulb:

皆様の便宜のために、堅牢なテストが統合されているプラグインおよびテーマコンポーネントの例をいくつか選びました。


このドキュメントはバージョン管理されています。変更は github で提案してください。

「いいね!」 15