GitLab へのプロセスの統合
この例では、パイプライン ジェネレーター version 1 を使用して、プロセスを GitLab® に統合する方法を示します。ファイルの伝播およびアーティファクト管理機能が強化されているため、パイプライン ジェネレーター version 2 が推奨されます。パイプライン ジェネレーター version 2 の設定と要件は、Process Integration and Artifact Management for GitLabに示されています。
パイプライン ジェネレーター Version 1
この例では、プロジェクトを GitLab に接続し、パイプライン ジェネレーター version 1 を使用して、プロジェクトとそのプロセス モデルの GitLab CI パイプライン ファイルを生成します。パイプライン ジェネレーターのオプションを指定して、タスクを別個のジョブに分割し、他のカスタム パイプラインの動作を使用するパイプラインを作成します。
GitLab プロジェクトと Runner の設定
プロジェクトを保存するソース管理対象のリモート リポジトリと、そのリポジトリでパイプラインを実行できるビルド エージェントを設定します。この例では、リモート リポジトリと CI システムの両方として GitLab を使用し、パイプラインを実行するための GitLab Runner を作成できます。
GitLab で新しい空のプロジェクトを作成して、リモート リポジトリを設定します。GitLab ドキュメンテーションの Create a project を参照してください。
マシンで GitLab Runner をインストール、登録、および起動します。GitLab Runner アプリケーションを使用すると、マシンを GitLab のビルド エージェントとして動作させることができます。Runner にタグを割り当てた場合は、そのタグ名をメモしてください。GitLab ドキュメンテーションの Install GitLab Runner を参照してください。
GitLab Runner がインストールされているマシンに、MATLAB®、Simulink®、Simulink Check™、CI Support Package for Simulink、およびプロセスに必要なその他の製品をインストールします。続行する前に、GitLab Runner マシンから MATLAB にアクセスして実行できることを確認してください。
ライセンスに関する考慮事項、Docker® コンテナー、およびバーチャル ディスプレイについては、Tips for Setting Up CI Agentsを参照してください。
メモ
CI ジョブを並列実行するには、次のいずれかを行う必要があります。
複数の Runner を使用可能にする。
concurrent設定を指定して、複数のジョブを同時に実行するように Runner を構成する。GitLab ドキュメンテーションの Advanced configuration を参照してください。
MATLAB プロジェクトの GitLab への接続
MATLAB プロジェクトをリモート リポジトリに接続して変更をリモートの GitLab リポジトリにプッシュできるようにし、GitLab でプロジェクトの CI パイプラインを自動化できるようにします。
MATLAB でプロジェクトを開きます。この例では、プロセス モデル例を使用するプロジェクト例を開きます。
プロセス モデルであるprocessAdvisorExampleStart
processmodel.mはプロジェクトのルートにあり、一般的なモデルベース デザインのタスクを含むプロセスを定義します。プロセス アドバイザー アプリを使用して、ローカル マシン上のプロセスでタスクを実行できます。コマンド ラインで「createprocess(Template = "default")」と入力して、既定のプロセス モデル テンプレートをプロジェクトにコピーできます。開発および検証のワークフローに合わせてテンプレート プロセス モデルをカスタマイズする方法については、プロセス モデルのカスタマイズを参照してください。ローカル リポジトリにリモート URL を追加して、プロジェクト、リモート リポジトリ、および CI プラットフォームを接続します。詳細については、リモートへの Git リポジトリの共有を参照してください。通常、リモート URL の形式は
https://gitlab.com/gitlab-org/gitlab.gitです。プロジェクト例は、ローカルの Git™ ソース管理を使用するように既に設定されています。プロジェクトでのソース管理の使用方法については、MATLAB プロジェクトでのソース管理の使用を参照してください。
GitLab Runner を使用するためのテンプレートの構成
GitLab では、プロジェクトのルートにある、通常 .gitlab-ci.yml という名前の CI/CD 構成ファイルを使用して、CI パイプラインを定義します。サポート パッケージには、再構成してパイプラインの自動生成に使用できる GitLab テンプレート ファイルが含まれています。
GitLab テンプレートをプロジェクト フォルダーにコピーします。GitLab テンプレート ファイルは汎用的であり、どのプロジェクトでも機能します。MATLAB で、現在のフォルダーをプロジェクトのルートに変更し、以下を入力します。
GitLabTemplate = fullfile(... matlabshared.supportpkg.getSupportPackageRoot,... "toolbox","padv","samples",".gitlab-ci-pipeline-gen.yml"); copyfile(GitLabTemplate,".gitlab-ci.yml")
[プロジェクト] ペインで、テンプレート ファイル
.gitlab-ci.ymlをプロジェクトに追加します。テンプレート ファイルには、GitLab の CI パイプライン定義が含まれています。テンプレート ファイルを開いて検査します。このファイルでは、GitLab CI/CD の YAML 構文を使用して、パイプラインを生成して実行できる親パイプラインを定義します。
ご使用の CI 設定で機能するようにテンプレートを再構成します。テンプレート内で
padv_demo_ciのインスタンスを検索し、使用する GitLab Runner のタグ名に置き換えます。たとえば、GitLab Runner のタグ名が
high_memoryである場合、tagsセクションとパイプライン生成オプション オブジェクトpadv.pipeline.GitLabOptionsでそのタグを指定します。
これにより、次に変更をリモート リポジトリにプッシュしたときに、テンプレート ファイルでプロセス内の各タスクのステージを含む GitLab パイプラインを生成できます。必要に応じて、テンプレート ファイルをさらにカスタマイズして、パイプライン ジェネレーターによるパイプラインの編成方法や実行方法を変更できます。テンプレート内の padv.pipeline.GitLabOptions オブジェクトを使用することで、タスクのドライ ラン、異なるジョブへのタスクの分割、およびその他のオプションの指定を行うことができます。
オプションのカスタマイズの実行
必要に応じて、テンプレート ファイルを再構成して、パイプライン ジェネレーターによるパイプラインの編成方法や実行方法をカスタマイズできます。パイプライン ジェネレーターのオプションをカスタマイズするには、テンプレート内の padv.pipeline.GitLabOptions オブジェクトのプロパティ値を変更します。
たとえば、次を行う必要があるとします。
タスクの完全な操作を実行せずに、タスクの入力をすばやく検証して代表的な出力を生成するために、タスクのドライ ランを行う。
GitLab Runner から必要な製品に確実にアクセスできるようにするために、ドライ ラン中にライセンスのチェックアウトを実行する。
タスクを異なるジョブに分割する。
テンプレート ファイルによるパイプラインの生成方法を変更するには、script セクションの padv.pipeline.GitLabOptions を変更します。
script:
# Open the project and generate the pipeline using
# appropriate options in project root
- >
matlab
-nodesktop
-logfile "$MATLAB_LOG_FILE"
-batch "
cp = openProject(pwd);
rpo = padv.pipeline.RunProcessOptions;
rpo.DryRun = true;
rpo.DryRunLicenseCheckout = true;
padv.pipeline.generatePipeline(
padv.pipeline.GitLabOptions(
PipelineArchitecture = padv.pipeline.Architecture.SerialStagesGroupPerTask,
RunprocessCommandOptions = rpo,
Tags = 'padv_demo_ci',
GeneratedYMLFileName = 'simulink_pipeline.yml',
GeneratedPipelineDirectory = fullfile('derived','pipeline')));
"runprocess 関数の動作をカスタマイズする padv.pipeline.RunProcessOptions オブジェクト rpo を作成します。このコードでは、runprocess の引数 DryRun および DryRunLicenseCheckout を true として指定し、PipelineArchitecture SerialStagesGroupPerTask を使用するように padv.pipeline.GitLabOptions オブジェクトを更新し、rpo で指定された RunprocessCommandOptions を使用します。詳細については、How Pipeline Generation Worksを参照してください。テンプレート ファイルの他の部分を変更する場合は、変更する部分で、有効な GitLab CI/CD の YAML 構文を使用していることを確認してください。詳細については、GitLab ドキュメンテーションの CI/CD YAML syntax reference を参照してください。
GitLab でのパイプラインの生成
[プロジェクト] タブの [ソース管理] セクションにある [コミット] ボタンと [プッシュ] ボタンを使用して、MATLAB プロジェクトをコミットして GitLab リポジトリにプッシュします。既定では、GitLab は、トリガー時にパイプラインを自動的に作成するための CI/CD 構成ファイルとして .gitlab-ci.yml を使用します。
このリモート リポジトリに変更を送信するたびに、GitLab でプロジェクト、プロセス、およびパイプライン生成オプションのカスタム パイプラインが生成されて実行されます。プロジェクトやプロセス モデルを変更した場合、.gitlab-ci.yml ファイルを更新する必要はありません。パイプライン ジェネレーターは、最新のプロジェクトおよびプロセス モデルを使用して、最新のパイプラインを自動的に生成します。.gitlab-ci.yml ファイルを更新する必要があるのは、パイプライン ジェネレーターによるパイプラインの編成方法や実行方法を変更する場合のみです。
GitLab では、パイプラインに次の 2 つの上流ジョブが含まれています。
SimulinkPipelineGeneration — 子パイプライン ファイルを生成します。
SimulinkPipelineExecution — 子パイプライン ファイルを実行します。既定では、子パイプラインには以下が含まれています。
padv.pipeline.GitLabOptionsで指定されたPipelineArchitectureプロパティによって編成された、プロセスのジョブ。プロセス アドバイザーのビルド レポートを生成する
Generate_PADV_Reportジョブ。ビルド アーティファクトを収集する
Collect_Artifactsジョブ。

参考
padv.pipeline.generatePipeline | padv.pipeline.GitLabOptions