Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

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

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

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

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

  • 統合を継続的に行うことにより、統合と配布のオーバーヘッドを最小化。

  • ソフトウェアの状態および行われた変更を明確に伝達。

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

継続的インテグレーションを使用したソフトウェア開発の典型的なワークフローにはいくつかの手順が含まれます。

  1. リモート リポジトリのクローンと機能ブランチの作成

  2. ファイルの編集とローカル リポジトリへの変更のコミット

  3. コミットされた変更のリモート リポジトリへのプッシュ (これにより、MEX ファイルのコンパイル、ツールボックスのパッケージ化、テストなど、自動化されたタスクのパイプラインが CI プラットフォーム上でトリガーされる)

  4. CI プラットフォームによって生成されたレポートの解析とパイプライン内のエラーの修正

  5. プル要求を使用したリモート機能ブランチのマスター ブランチへのマージ (これにより、もう 1 つの自動化されたタスクのパイプラインが CI プラットフォーム上でトリガーされる)

  6. CI プラットフォームによって生成されたレポートの解析とマージエラーの解決

次の図は、Jenkins™ CI サーバーとオープンソースのソース コード管理ツール (Git™ や GitHub® など) を使用した開発サイクルの例を示しています。MATLAB® と Jenkins の間のインターフェイスの設定方法については、Run MATLAB Tests on Jenkins Server を参照してください。

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

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

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

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

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

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

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

  1. コミット済みの変更を GitHub にプッシュするか、リモート機能ブランチをマスター ブランチにマージするプル要求を行うことにより、Jenkins 上で自動化されたタスクのパイプラインをトリガーします。

  2. Jenkins は自動化されたパイプライン (MATLAB と Simulink のテストを含む) を実行し、プロジェクト コンフィギュレーションで指定されているアーティファクトを生成します。

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

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

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

  2. 変更を GitHub にプッシュするか、プル要求を行うことにより、Jenkins 上で新しいパイプラインをトリガーします。

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

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

MATLAB テスト フレームワークを使用してテスト スイートとテスト ランナーを作成し、matlab.unittest.plugins パッケージ内のプラグイン クラスを使用して継続的インテグレーション ワークフロー用にテスト ランナーをカスタマイズすることができます。たとえば、XMLPlugin クラスは JUnit スタイルの XML 出力を生成するプラグインを作成し、TAPPlugin クラスは Test Anything Protocol (TAP) ストリームを生成するプラグインを作成します。

MATLAB は、MATLAB 用の Jenkins プラグインを使用して、Jenkins と統合します。このプラグインを使用すると、MATLAB と Simulink のテストを簡単に実行し、JUnit スタイルのテスト結果、TAP テスト結果、Cobertura のコードまたはモデル カバレッジのレポートなどのアーティファクトを生成できます。詳細については、MATLAB 用の Jenkins プラグインの説明を参照してください。

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

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

  • モデルおよびプロジェクトのビルドとテスト

  • シミュレーションおよびコード生成用のファイルのキャッシュ

プロジェクトを使用したソース管理について (Simulink)

Git でのプロジェクトの使用 (Simulink)

シミュレーションを高速化するための Simulink キャッシュ ファイルの共有 (Simulink)

Simulink Test™

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

Continuous Integration (Simulink Test)

Simulink Check™

Jenkins を使用してモデル内のメトリクスのしきい値違反を検出

継続的インテグレーション システム ワークフローにおけるメトリクスのしきい値違反の修正 (Simulink Check)

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

外部ソースからの結果を検証の状態に含める (Simulink Requirements)

Polyspace® Bug Finder™ Server™Polyspace Code Prover™ Server

  • Jenkins などを使用した継続的インテグレーションの一環として C/C++ コードに対する Polyspace 解析を実行

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

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

Run Bug Finder Analysis on Server During Continuous Integration (Polyspace Bug Finder Server)

Run Code Prover Analysis on Server During Continuous Integration (Polyspace Code Prover Server)

参考

関連するトピック

外部の Web サイト