メインコンテンツ

GitHub プル リクエストへのモデル比較レポートの添付

GitHub Actions を使用して、GitHub® プル リクエストおよびプッシュ イベントの Simulink® モデル差分の生成を自動化します。比較レポートをプル リクエストまたはプッシュ イベントに自動的に添付して、MATLAB® および Simulink の外部で簡単に表示できるようにします。Simulink Model Comparison for GitHub Pull Requests (4 分 46 秒) をご覧ください。

前提条件

  1. MATLAB コードと YAML ファイルを https://github.com/mathworks/Simulink-Model-Comparison-for-GitHub-Pull-Requests からダウンロードします。

  2. リポジトリに対して GitHub Actions が有効になっていることを確認します。

  3. Diff_runTests_push.yml ファイルおよび Diff_runTests_pullrequest.yml ファイルで定義されているアクションは、セルフホスト ランナーを使用します。セルフホスト ランナーを使用することで、リポジトリを非公開のままにすることができます。セルフホスト ランナーをリポジトリに追加するには、https://docs.github.com/en/actions/hosting-your-own-runners の手順に従います。

  4. 使用しているセルフホスト ランナーに MATLAB と Simulink がインストールされていることを確認します。

あるいは、GitHub でホストされているランナーを使用する場合は、代わりに githubrunner_push.yml ファイルおよび githubrunner_pullrequest.yml ファイルで定義されているアクションを使用します。

GitHub Actions を使用した差分レポートの添付

GitHub Actions を使用して、YAML ファイルで定義されているワークフローを自動化できます。この例では、GitHub の main ブランチへのプッシュおよびプル リクエストでトリガーされるワークフローを設定する方法を示します。これらのワークフローでは、MATLAB コード ファイルを使用して以下を行います。

  1. Git™ コマンドを使用して、変更されたモデル ファイルとその先祖のリストを取得します。

  2. 変更されたすべてのモデルをその先祖と比較し、visdiff を使用して HTML 比較レポートをパブリッシュします。変更のピア レビューを実施するには、レポートのパブリッシュ時に HTML ではなく DOCX ファイル形式を使用します。DOCX ファイルを使用すると、レビュー担当者はさまざまなブロックやパラメーターに関する詳細なコメントを残すことができます。

  3. 完了したら、すべてのモデル比較レポートをジョブにアップロードします。

  4. すべてのプロジェクト テストを実行します。

GitHub でワークフローを設定するには、次のようにします。

  1. MATLAB コード ファイルをリポジトリに追加します。[Add file][Upload] を選択して、ファイルをアップロードします。次に、[Commit Changes] をクリックします。

  2. 新しいワークフローを作成するには、次のようにします。

    1. [Actions] タブで [set up a workflow yourself] をクリックします。

      GitHub はすべてのワークフローを .github/workflows フォルダーに保存します。.github/workflows フォルダーがまだ存在しない場合、GitHub によってリポジトリ内に自動的に作成されます。

    2. ダウンロードした YAML ファイルの 1 つ (例: Diff_runTests_pullrequest.yml) の内容をコピーし、[Edit new file] フィールドに貼り付けます。

    3. ファイルの名前を変更し、[Start commit][Commit new file] をクリックします。

    4. ダウンロードした 2 つ目の YAML ファイルに対しても同じ手順を繰り返します。

    あるいは、リポジトリに既に .github/workflows フォルダーがある場合は、YAML ファイルを .github/workflows にアップロードし、変更をコミットします。

これで、コミットを main ブランチにプッシュするか、開発用ブランチを main にマージするプル リクエストを作成すると、設定したワークフローがトリガーされます。ジョブが成功すると、コントリビューターとレビュー担当者は各ジョブの [Artifacts] セクションにあるモデル比較レポートにアクセスできるようになります。

メモ

  • 比較レポートにスクリーンショットを含めるには、ランナーにディスプレイが必要です。Linux® オペレーティング システムでは、ランナーにディスプレイがない場合、YAML ファイルで次のいずれかの回避策を使用できます。

    • 「Compare Models to Ancestors」(モデルを先祖と比較する) ステップの前に、ディスプレイ サーバーを起動する。例については、githubrunner_pullrequest.yml ファイルの「Start Display Server」(ディスプレイ サーバーを起動する) ステップを参照してください。

    • xvfb-run を使用して、X11 ディスプレイ サーバー プロトコルを実装するディスプレイ サーバーでコマンドを実行する。

  • R2022b 以降では、ディスプレイのないマシンでジョブを実行する場合、比較ツールを使用してスクリーンショットのない比較レポートを生成できます。

参考

トピック