GitHub プル リクエストへのモデル比較レポートの添付
GitHub Actions を使用して、GitHub® プル リクエストおよびプッシュ イベントの Simulink® モデル差分の生成を自動化します。比較レポートをプル リクエストまたはプッシュ イベントに自動的に添付して、MATLAB® および Simulink の外部で簡単に表示できるようにします。Simulink Model Comparison for GitHub Pull Requests (4 分 46 秒) をご覧ください。
前提条件
MATLAB コードと YAML ファイルを https://github.com/mathworks/Simulink-Model-Comparison-for-GitHub-Pull-Requests からダウンロードします。
リポジトリに対して GitHub Actions が有効になっていることを確認します。
Diff_runTests_push.ymlファイルおよびDiff_runTests_pullrequest.ymlファイルで定義されているアクションは、セルフホスト ランナーを使用します。セルフホスト ランナーを使用することで、リポジトリを非公開のままにすることができます。セルフホスト ランナーをリポジトリに追加するには、https://docs.github.com/en/actions/hosting-your-own-runners の手順に従います。使用しているセルフホスト ランナーに MATLAB と Simulink がインストールされていることを確認します。
あるいは、GitHub でホストされているランナーを使用する場合は、代わりに githubrunner_push.yml ファイルおよび githubrunner_pullrequest.yml ファイルで定義されているアクションを使用します。
GitHub Actions を使用した差分レポートの添付
GitHub Actions を使用して、YAML ファイルで定義されているワークフローを自動化できます。この例では、GitHub の main ブランチへのプッシュおよびプル リクエストでトリガーされるワークフローを設定する方法を示します。これらのワークフローでは、MATLAB コード ファイルを使用して以下を行います。
Git™ コマンドを使用して、変更されたモデル ファイルとその先祖のリストを取得します。
変更されたすべてのモデルをその先祖と比較し、
visdiffを使用して HTML 比較レポートをパブリッシュします。変更のピア レビューを実施するには、レポートのパブリッシュ時に HTML ではなく DOCX ファイル形式を使用します。DOCX ファイルを使用すると、レビュー担当者はさまざまなブロックやパラメーターに関する詳細なコメントを残すことができます。完了したら、すべてのモデル比較レポートをジョブにアップロードします。
すべてのプロジェクト テストを実行します。
GitHub でワークフローを設定するには、次のようにします。
MATLAB コード ファイルをリポジトリに追加します。[Add file] 、 [Upload] を選択して、ファイルをアップロードします。次に、[Commit Changes] をクリックします。
新しいワークフローを作成するには、次のようにします。
[Actions] タブで [set up a workflow yourself] をクリックします。
GitHub はすべてのワークフローを
.github/workflowsフォルダーに保存します。.github/workflowsフォルダーがまだ存在しない場合、GitHub によってリポジトリ内に自動的に作成されます。ダウンロードした YAML ファイルの 1 つ (例:
Diff_runTests_pullrequest.yml) の内容をコピーし、[Edit new file] フィールドに貼り付けます。ファイルの名前を変更し、[Start commit] 、 [Commit new file] をクリックします。
ダウンロードした 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 以降では、ディスプレイのないマシンでジョブを実行する場合、比較ツールを使用してスクリーンショットのない比較レポートを生成できます。