メインコンテンツ

GitLab マージ要求にモデル比較レポートを添付

この例では、GitLab CI/CD を使用して、GitLab® マージ要求およびプッシュ イベントに対する Simulink® モデルの差分の生成を自動化する方法を示します。比較レポートをマージ要求またはプッシュ イベントに自動的に添付して、MATLAB® や Simulink の外部で簡単に表示できるようにします。

前提条件

  1. 例を開いて、2 つの MATLAB コード ファイル (diffGitLab_mergerequest.mdiffGitLab_push.m) および YAML ファイル .gitlab-ci.yml をダウンロードします。

  2. .gitlab-ci.yml で定義されたジョブは、セルフホスト ランナーを使用します。セルフホスト ランナーを使用することで、ハードウェアのカスタマイズが可能になります。セルフホスト ランナーをリポジトリに追加するには、https://docs.gitlab.com/ee/tutorials/create_register_first_runner/#create-and-register-a-project-runner の手順に従います。

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

あるいは、GitLab でホストされるランナーを使用する場合は、提供されている .gitlab-ci.yml ファイルの .matlab_defaults ブロックを更新します。GitLab でホストされるランナーは、MATLAB R2020b 以降のリリースを使用してビルドを実行するための MATLAB Container on Docker Hub を実装しています。詳細については、https://github.com/mathworks/matlab-gitlab-ci-template?tab=readme-ov-file#use-matlab-with-gitlab-cicd を参照してください。

GitLab CI/CD を使用した差分レポートの添付

GitLab CI/CD を使用して、YAML ファイルで定義されているワークフローを自動化できます。この例では、GitLab の main ブランチに対するプッシュ時およびマージ要求時でトリガーされるワークフローを設定する方法を示します。これらのワークフローでは、MATLAB コード ファイルを使用して以下を行います。

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

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

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

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

GitLab でパイプラインを設定するには、[+][Upload file] を選択して、MATLAB コード ファイルと .gitlab-ci.yml をリポジトリに追加します。その後、リポジトリをクローンして新しいコピーを作成します。あるいは、MATLAB でリポジトリにファイルを追加し、変更をリモート リポジトリにプッシュします。

これで、コミットを main ブランチにプッシュするか、開発用ブランチを main とマージするマージ要求を作成すると、設定したパイプラインがトリガーされます。ジョブが成功すると、コントリビューターとレビュー担当者は [Download artifacts] ボタンを使用してモデル比較レポートにアクセスできるようになります。

Passed job in GitLab with the mouse pointing to the Download artifacts button positioned to the right of the job

メモ

  • 比較レポートにスクリーンショットを含めるには、ランナーにディスプレイが必要です。Linux® オペレーティング システムでは、ランナーにディスプレイがない場合、xvfb-run を使用して、X11 ディスプレイ サーバー プロトコルを実装するディスプレイ サーバーでコマンドを実行できます。

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

参考

トピック