メインコンテンツ

継続的インテグレーションを使用したソフトウェアの開発と統合

継続的インテグレーション (CI) とは、コード変更を一元化された共有リポジトリに頻繁に取り込む手法です。CI により、コードのビルド、テスト、パッケージ化などのアクティビティを自動化および標準化することで、チームのスループットとソフトウェアの品質が向上します。たとえば、開発者がコード変更を一元化リポジトリにプッシュするたびに、継続的インテグレーション プラットフォームはテスト スイートを自動的に実行し、一元化リポジトリのターゲット ブランチで変更による競合が発生しないことを確認することができます。

継続的インテグレーションには次のようなメリットがあります。

  • ソフトウェアの問題を発生後すぐに検出して修正

  • コードのデバッグに必要なリソースを削減しながら機能を追加

  • 変更を継続的に統合することで、統合と展開のオーバーヘッドを最小化

  • ソフトウェアの状態と最近の変更を明確に伝達

継続的インテグレーション ワークフロー

一般的な継続的インテグレーション ワークフローには、3 つの段階の複数の手順が含まれます。

段階 1: ローカル リポジトリでの機能の開発と検定

機能を開発し、ローカル リポジトリに対して変更をコミットします。

  1. 一元化リポジトリをクローンして新しい機能ブランチを作成します。

  2. 適宜、既存のファイルを変更するか、新しいファイルを追加します。

  3. MATLAB® と Simulink® のテストを実行して変更を検定し、変更をローカル リポジトリにコミットします。

段階 2: 継続的インテグレーション プラットフォーム上での自動化されたパイプラインの実行

変更を一元化リポジトリにプッシュするとき、またはプル要求を行うときに、自動化されたタスクのパイプライン (テストを含む) を実行します。

  1. コミットされた変更を一元化リポジトリにプッシュするか、プル要求を作成して機能ブランチをメイン ブランチにマージします (これにより、MEX ファイルのコンパイル、MATLAB および Simulink テストの実行、CI プラットフォームでのツールボックスのパッケージ化などのタスクの自動化されたパイプラインがトリガーされます)。

  2. CI プラットフォームは自動化されたパイプラインを実行し、プロジェクト構成で指定されたとおりにアーティファクトを生成します。

段階 3: 失敗の調査と解決

変更のプッシュまたはプル要求に失敗した場合は、次の手順に従います。

  1. 自動化されたパイプラインの結果および生成されたアーティファクトを調査します。コードに適切な変更を行います。

  2. 変更を一元化リポジトリにプッシュするか、プル要求を行うことにより、CI プラットフォーム上で新しいパイプラインをトリガーします。

統合担当のエンジニアは、CI プラットフォームのアーティファクトを使用して、機能ブランチをメイン ブランチにマージするタイミングを判断できます。

次の図は、CI プラットフォームとして Jenkins®、ソース コード管理ツールとして Git™ および GitHub® を使用した継続的インテグレーション ワークフローの例を示しています。Jenkins と共に MATLAB を使用する方法については、Run MATLAB Tests on Jenkins Server を参照してください。Git および Subversion® (SVN) との組み込みの統合の詳細については、MATLAB におけるソース管理の統合を参照してください。

Example of the continuous integration workflow

MathWorks 製品を使用した継続的インテグレーション

さまざまな CI プラットフォームで MATLAB を使用して継続的インテグレーションを実行できます。MATLAB コードおよび Simulink モデルの実行とテスト、アーティファクトの生成、およびプラットフォームへの結果のパブリッシュができます。詳細については、CI プラットフォーム上での MATLAB との継続的インテグレーションを参照してください。

MATLAB に加えて、さまざまなツールボックスが継続的インテグレーション ワークフローをサポートしています。次の表に、コードやモデルに対する継続的インテグレーションの一般的な使用例を示します。

ツールボックス使用例詳細
Simulink

  • シミュレーションおよびコード生成用にファイルをキャッシュする。

  • モデル比較レポートをプル要求およびマージ要求に添付する。

  • CI プラットフォームでモデルを自動的にマージする。

Simulink Test™

CI プラットフォーム上でテスト ファイルを実行し、Simulink Coverage™ を使用して CI 互換のカバレッジを収集する。

継続的インテグレーション (Simulink Test)

Simulink Check™

自動化されたプロセスをチームに展開して開発作業や検証作業の特定、自動化、完了を支援する。

継続的インテグレーション (Simulink Check)

Requirements Toolbox™CI プラットフォーム上で実行されたテストに関する要件検証結果をまとめる。

外部ソースからの結果を検証ステータスに含める (Requirements Toolbox)

Polyspace® Bug Finder™ Server™, Polyspace Code Prover™ Server
  • 継続的インテグレーションの一環として C/C++ コードに対する Polyspace 解析を実行する。

  • Polyspace Access™ Web インターフェイスでの確認用に解析結果 (バグ、実行時エラー、コーディング規約違反) をアップロードする。

  • Polyspace Bug Finder または Polyspace Code Prover の結果を含む電子メール通知を送信する。

参考

関数

名前空間

トピック

外部の Web サイト