テクノロジーの急速な発展と、さまざまな業界でのソフトウェア ロジックの複雑さの増加による要件の変化に伴い、従来のテストでは、対応する一連のテスト タスクに対応できなくなりました。そんな課題を解決する統合構築DevOpsプラットフォーム。この記事ではSkyEyeとJenkinsの継続的インテグレーションソリューションを中心に紹介します。
DevOpsとは何ですか? DevOps はソフトウェア開発および運用保守の文化と方法論であり、開発者 (開発) と運用保守チーム (運用) 間の協力と調整を強化して、より効率的、高速、安定したソフトウェアの配信と導入プロセスを実現することを目的としています。自動化と継続的なフィードバック、配信プロセス全体の継続的な改善と最適化を通じた、ソフトウェア開発、テスト、導入、運用と保守のシームレスな接続を強調しています。
継続的インテグレーション環境を構築するには、次の 3 つの条件を満たす必要があります。
(1) 自動コンパイル、配布、展開、テストなどを含む自動構築プロセス。
(2) コード リポジトリ。コードの保守性を確保するためのバージョン管理ソフトウェアと、構築プロセス用のマテリアル ライブラリが必要です。
(3) 継続的統合サーバー。
継続的インテグレーションでは、ワークフロー全体を完了するために複数のツールを組み合わせる必要があります。ツールチェーンの機能と関連テクノロジーを次の表に示します。
▲ ビジネスプロセスとツールチェーンの対応
01. SkyEyeの紹介
天母オールデジタル リアルタイム シミュレーション ソフトウェアの中国語正式名である SkyEye は、ビジュアル モデリングに基づいた国内で管理および制御可能なハードウェア動作レベル シミュレーション プラットフォームであり、組み込みソフトウェアに仮想化されたオペレーティング環境を提供できます。この仮想オペレーティング環境を使用して、ソフトウェア開発、ソフトウェア テスト、およびソフトウェア検証アクティビティを実行します。
SkyEye に基づく継続的インテグレーションのフローチャートを次の図に示します。
▲ SkyEyeフルデジタルシミュレーションソフトウェアに基づく継続的統合プロセスのデモ図
SkyEye に基づく継続的インテグレーション プロセスに関与するツール チェーンは次のとおりです。
▲組み込みソフトウェアテストツールチェーン実装技術
02.ジェンキンスの紹介
Jenkins は、ソフトウェア プロジェクトを構築、テスト、展開するためのオープン ソースの自動化サーバー ツールであり、継続的インテグレーション (CI) および継続的デリバリー (CD) のツールでもあり、開発チームがソフトウェア開発プロセスのさまざまなタスクを自動化するのに役立ちます。
Jenkins の主な特徴と機能は次のとおりです。
自動ビルド:コードが Git などのバージョン管理リポジトリにコミットされるときに、開発チームが自動ビルド プロセスをトリガーできるようにします。新しいコードが送信されると、Jenkins は自動的に最新のコードを取得してプロジェクトをビルドし、プロジェクトのコンパイル可能性を確保します。
継続的インテグレーション:開発者のコードを共有コード ベースに統合し、各コード コミットをビルドしてテストすることにより、継続的インテグレーションをサポートします。さまざまなバージョン管理システム (Git、Subversion など) と統合して、コードの変更を監視し、自動的に実行できます。ビルドプロセスをトリガーします。
プラグイン エコシステム:機能を拡張し、他の開発および展開ツールを統合できる巨大なプラグイン エコシステムがあり、プラグインはツールの構築、フレームワークのテスト、静的コード分析、クラウド プラットフォームへの展開に使用できます。
拡張性:プロジェクトのニーズに応じてカスタマイズできるため、ユーザーはカスタム ビルド プロセスを作成し、カスタム スクリプトやコマンドを追加し、他のツールやサービスと統合できます。
ビジュアル インターフェイス:使いやすい Web インターフェイスを提供し、ユーザーはビルド プロセスの管理と監視、ビルド履歴の表示、ビルド トリガーの設定、ビルド出力の監視などを行うことができます。
分散ビルド:ビルド タスクを複数のエージェント ノードに分散して実行できるため、ビルド プロセスが高速化され、全体的なパフォーマンスが向上します。
レポートと通知:テスト結果、コード カバレッジ、静的コード分析結果を含む詳細なビルド レポートを生成でき、ビルド ステータスと通知を電子メール、インスタント メッセージ、その他のチャネル経由でチーム メンバーに送信できます。
Jenkins の柔軟性とカスタマイズ性により、Jenkins は継続的インテグレーションと継続的デリバリー プロセスにおける重要なツールになります。複雑なビルドタスクを自動化し、タイムリーなフィードバックとレポートを提供し、チームワークと共同開発を促進します。小規模なプロジェクトでも大規模なエンタープライズ アプリケーションでも、Jenkins は開発チームが効率を高め、リスクを軽減し、高品質のソフトウェアを提供できるように支援します。
03. SkyEye と Jenkins の継続的統合
SkyEye と Jenkins の統合には多くの利点があります。
特定のハードウェア制限を取り除きます。組み込みソフトウェア テストの複数のモデルを PC 上で実行できます。
スクリプト化された構成:複雑な構成プロセスを削減し、操作プロセスを簡単にします。
自動テスト: Jenkins 継続的統合ツールは、構築プロセスを自動化すると同時に、統合の頻度を高めることで欠陥をできるだけ早く検出し、方向性のエラーを回避できます。
リスクの軽減: 1 日に複数の統合シミュレーション テストを実行できるため、欠陥を確認し、ソフトウェアのステータスを理解するのに有益です。
時間と場所に制限されない:いつでもどこでも展開可能なソフトウェアを生成できます。継続的インテグレーションを使用すると、いつでもソース コードに小さな変更を加えることができ、これらの変更を他のコードと統合してタイムリーなテストを行うことができます。
SkyEye と Jenkins 間の継続的統合プロセスは次のとおりです。
1. ソースコード管理/SkyEye プロジェクト/テストデータ管理:
SkyEye を通じて対応するプロジェクトをビルドし、ビルドされたプロジェクトを Gitea ウェアハウスのプロジェクト ブランチにアップロードし、ソース コードを Gitea ウェアハウスのコード ブランチにアップロードします。
2. コードの変更:
git add/git commit/git Push 操作を通じて、git Push コマンドは Webhock をトリガーして、Jenkins に自動ビルド タスクを実行するように通知します。
3. Jenkins はタスクを構築するための指示を受け取ります。
Gitea ウェアハウス内のソース コードとプロジェクトをプルし、CCS を通じてソース コードをコンパイルし、バイナリ ファイルを生成します。
4. バイナリの展開:
バイナリ ファイルを SkyEye プロジェクトにコピーします。
5. SkyEye による自動テスト:
自動テストは Python スクリプトまたはコマンド ライン命令を通じて実行され、テスト結果が生成されます。
6. Jenkins は電子メールを自動的に送信します。
タスクの構築状況やテスト結果をメールで通知します。
このうち、Jenkins の構成プロセスを次の図に示します。
(1) サーバーがテスト サーバーに接続されるようにスレーブ ノードを構成します。
▲スレーブノードの構成
(2) 新しい継続的統合タスクを作成します。
▲ 新しいタスク構成
(3) ソース コード、テスト スクリプト、シミュレーション プロジェクトのクローンを作成します。
▲クローンソースコード構成
▲ クローンテストデータの構成
▲クローンテストプロジェクトの構成
(4) コンパイル スクリプトと自動テスト スクリプトを構成します。
▲ コンパイルスクリプト、自動テストスクリプト設定
(5) 電子メール設定。
▲メールテンプレートの構成
(6) 実施プロセス。
▲ Jenkinsでのテストケース実行
(7) 試験結果の通知。
Python スクリプトを使用してテスト結果を整理し、Jenkins に付属の電子メール プラグインを通じてテスト結果を通知します。
▲メール受信テスト結果