JP7478037B2 - Continuous integration system and continuous integration method - Google Patents
Continuous integration system and continuous integration method Download PDFInfo
- Publication number
- JP7478037B2 JP7478037B2 JP2020105577A JP2020105577A JP7478037B2 JP 7478037 B2 JP7478037 B2 JP 7478037B2 JP 2020105577 A JP2020105577 A JP 2020105577A JP 2020105577 A JP2020105577 A JP 2020105577A JP 7478037 B2 JP7478037 B2 JP 7478037B2
- Authority
- JP
- Japan
- Prior art keywords
- job
- execution
- resource
- execution machine
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
本発明は、モデルベース開発での継続的インテグレーションシステムに関する。 The present invention relates to a continuous integration system in model-based development.
モデルベース開発は、組み込みシステム開発において広く採用されている。モデルベース開発ではソフトウェア設計にモデルファイルを利用し、設計段階からシミュレーションを実行できるため設計の検証が早期に行えることから、ソフトウェアの信頼性が高くなることが特徴である。また、モデルファイルから直接自動的にコードが生成できるため、開発におけるコーディングの工数が削減できることも特徴である。 Model-based development is widely adopted in embedded system development. Model-based development uses model files in software design and allows simulations to be performed from the design stage, which means design verification can be performed early on, resulting in high software reliability. Another feature is that code can be generated automatically directly from model files, reducing the amount of coding work required during development.
継続的インテグレーション(Continuous Integration、以下CI)は、仕様変更に伴うソースファイルの頻繁な変更に対してビルド及びテストをその都度自動的に実行し、エラーを早期に発見、修正することができる開発手法である。 Continuous integration (CI) is a development method that automatically runs builds and tests whenever source files are frequently changed due to specification changes, enabling early detection and correction of errors.
CIにより、開発、テスト、リリースのサイクルが継続的に行われる仕組みが提供され、ソフトウェアの不具合を早期に発見、対処し、品質を短期で向上させることが可能となる。 CI provides a mechanism for continuous development, testing, and release cycles, making it possible to detect and address software defects early and improve quality in a short period of time.
従来のウォーターフォールに代表される開発手法では、一つの長い開発サイクルのために最終工程までビルド及びテストが実行されない。そのためビルドやテスト実行時にエラーが発生した場合、開発は最終工程であるために原因を解析するため非常に時間がかかるだけでなく、修正の際の手戻りが大きく、工数が増大する。 In traditional development methods such as waterfall, building and testing are not performed until the final stages of a single long development cycle. As a result, if an error occurs during building or testing, not only does it take a lot of time to analyze the cause because development is the final stage, but it also requires a lot of rework when making corrections, increasing the amount of work required.
一方のアジャイル的ソフトウェア開発により開発サイクルが短いCIでは、その短いサイクルの中で都度ビルド及びテストを繰り返すため、エラーを早期に発見し、修正することが可能である。 On the other hand, CI, which has a short development cycle due to agile software development, repeats builds and tests each time within that short cycle, making it possible to find and correct errors early.
また、開発初期の段階で仕様漏れや仕様違いに気が付くことができ、素早い修正が可能である。それにより従来の手法に比べ、リードタイムが削減できるだけでなく、一定の品質を保つことが可能である。 In addition, any omissions or differences in specifications can be detected at an early development stage, allowing for quick corrections. This not only reduces lead time compared to traditional methods, but also makes it possible to maintain a certain level of quality.
以下ではCIを構成するビルドやテストはジョブと呼ぶ。またジョブを内包した集まりをパイプラインと呼ぶ。 In what follows, the builds and tests that make up a CI will be called jobs. A collection of jobs will be called a pipeline.
特許文献1は、過去のテストの履歴情報に着目し、各テストに必要なリソースを推定することにより、各テストのインスタンスに割り当てるリソースを変更し、テスト実行時に割り当てるリソース量を低減している。
前記先行技術文献でのテスト工程でのリソース消費量削減の手法は過去の実施データが必要であり、モデルベース開発での継続的インテグレーションにおけるコード生成やビルド工程への応用は困難である。 The method for reducing resource consumption in the testing process described in the above prior art documents requires past implementation data, making it difficult to apply to the code generation and build processes in continuous integration in model-based development.
しかし、過去の履歴情報に基づくリソース推定は実施する処理の負荷が常に同等であるという前提の基で成り立っている。このため、モデルベース開発では処理の負荷がモデルファイルや生成コードに依存するだけでなく、それらのファイルは継続的インテグレーションにおいて日々単位で更新されるため、過去の履歴情報を利用したリソース推定は困難である。 However, resource estimation based on historical information is based on the assumption that the load of the processing performed is always the same. For this reason, in model-based development, not only does the processing load depend on the model files and generated code, but these files are updated daily during continuous integration, making it difficult to estimate resources using historical information.
本発明は以上の点を考慮してなされたもので、各工程の処理前にモデルファイルや生成コードを静的に解析することで事前に処理の負荷を推定し、その結果に基づいて各工程に割り当てるリソースを最適に配分し、各工程の処理実行時に割り当てるリソース量を最適化することを目的とする。 The present invention has been made in consideration of the above points, and aims to estimate the processing load in advance by statically analyzing the model file and generated code before each process is processed, and to optimally allocate resources to each process based on the results, thereby optimizing the amount of resources allocated when each process is executed.
本発明は、ファイルの構成管理を行うバージョン管理サーバーと、前記バージョン管理サーバーからの要求に応じてCIジョブの実行をジョブ実行マシン群の実行マシンに依頼するCIサーバーと、前記CIサーバーからの要求に応じて前記CIジョブを実行するジョブ実行マシン群からなる継続的インテグレーションシステムであって、前記CIサーバーは、前記バージョン管理サーバーから入力ファイルを受け付けて、実行要求のあったパイプラインを構成するCIジョブ毎に、実行に必要なリソースの推定要求を発行し、受信した推定結果に基づいて前記ジョブ実行マシン群の実行マシンにCIジョブの実行を依頼するCIジョブ実行部と、前記CIジョブ実行部からの推定要求に応じて、前記CIジョブに割り当てるリソースを推定するリソース推定演算部と、前記リソース推定演算部からの推定結果に応じて、前記CIジョブに割り当てるリソースを決定するリソース決定演算部を有し、前記リソース推定演算部は、前記CIジョブ実行部からのリソースの推定要求に応じて、前記入力ファイルを処理する際の負荷の指標として、前記CIジョブの前記入力ファイルから論理複雑度を算出し、前記リソース決定演算部は、前記リソース推定演算部から受け取った前記論理複雑度に基づいて、予め設定された論理複雑度とジョブ実行マシン対応情報から前記CIジョブを実行する実行マシンを決定する。 The present invention provides a continuous integration system including a version management server that performs file configuration management, a CI server that requests an execution machine of a job execution machine group to execute a CI job in response to a request from the version management server, and a job execution machine group that executes the CI job in response to a request from the CI server, wherein the CI server receives an input file from the version management server, issues a request to estimate resources required for execution for each CI job that constitutes a pipeline for which execution has been requested, and requests an execution machine of the job execution machine group to execute the CI job based on the received estimation result, and The CI job execution unit includes a resource estimation calculation unit that estimates resources to be allocated to the CI job in response to an estimation request from a job execution unit, and a resource determination calculation unit that determines resources to be allocated to the CI job in response to an estimation result from the resource estimation calculation unit, wherein the resource estimation calculation unit calculates a logical complexity from the input file of the CI job as an index of the load when processing the input file in response to a resource estimation request from the CI job execution unit, and the resource determination calculation unit determines an execution machine to execute the CI job from a predetermined logical complexity and job execution machine correspondence information based on the logical complexity received from the resource estimation calculation unit.
本発明によれば、過去の履歴情報に頼ることなく、日々単位で更新されるモデルファイルやソースファイル等のファイルに応じたリソースを最適に配分し、各工程(CIジョブ)の処理の実行の際に割り当てるリソースを最適化することが可能となる。 According to the present invention, it is possible to optimally allocate resources according to files such as model files and source files that are updated daily without relying on past history information, and to optimize the resources allocated when executing the processing of each process (CI job).
本明細書において開示される主題の、少なくとも一つの実施の詳細は、添付されている図面と以下の記述の中で述べられる。開示される主題のその他の特徴、態様、効果は、以下の開示、図面、請求項により明らかにされる。 Details of at least one implementation of the subject matter disclosed herein are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the disclosed subject matter will become apparent from the following disclosure, drawings, and claims.
以下、本発明を実施するための実施形態について説明する。 The following describes an embodiment of the present invention.
図1は、継続的インテグレーション(以下、CI)システムの構成の一例を示すブロック図である。CIシステムは、ファイルの構成管理を行うバージョン管理サーバー40と、パイプライン72を構成するCIジョブ73-1~73-Nを実行するために必要な計算機リソースを推定及び決定し、CIジョブ73-1~73-Nの実行をジョブ実行マシン群200に要求するCIサーバー70と、CIジョブ73-1~73-Nの処理を行う複数の実行マシン(計算機)211-1~211-Mからなるジョブ実行マシン群200から構成される。
Figure 1 is a block diagram showing an example of the configuration of a continuous integration (hereafter referred to as CI) system. The CI system is composed of a
なお、CIジョブを個々に特定しない場合には、「-」以降を省略した符号「73」を使用する。また、他の構成要素の符号についても同様である。 When not specifying an individual CI job, the symbol "73" is used with the "-" and everything after it omitted. The same applies to the symbols for the other components.
バージョン管理サーバー40は、ファイル群の構成管理を行う機能を有し、ファイル群を管理するブランチ42と、複数のブランチ42を管理するリポジトリ41から構成される。図2は、バージョン管理サーバー40の機能の一例を示すブロック図である。
The
本実施例ではファイル群として、プログラムのソースファイルからなるソースファイル群43と、モデルを記述したモデルファイル群44と、CIスクリプト45と、パイプラインを構成するCIジョブ73を記述したパイプライン構成ファイル群48をブランチ42が管理する。
In this embodiment, the
また、CIスクリプト45は、CIジョブ73の処理を記述したCIジョブスクリプト群46と、CIジョブ73に適切な実行マシン211を割り当てるための正規化論理複雑度-ジョブ実行マシン対応表47からなる。
The
CIサーバー70は、パイプライン72の構成に従ってCIジョブ73の実行管理を行うCIジョブ実行部71と、パイプライン72を構成するCIジョブ73に必要なリソースを推定するリソース推定演算部80と、推定されたリソースからCIジョブ73を実行するために必要なリソースを決定するリソース決定演算部90からなる。
The
なお、本実施例のパイプライン72は、CIジョブ73-1からCIジョブ73-Nを順次実行する例を示す。
In this embodiment, the
ユーザー1はユーザー端末2を通じて入力ファイル群20をバージョン管理サーバー40へ送信する。バージョン管理サーバー40は受信した入力ファイル群20をリポジトリ41上のブランチ42へ格納する。
バージョン管理サーバー40は、受信した入力ファイル群20とブランチ42に格納されたファイル群との間に差分が存在する場合、CIサーバー70へファイル更新情報50とパイプライン入力ファイル51を送信する。
If there is a difference between the received
パイプライン入力ファイル51は、ブランチ42内の全てのファイルであるソースファイル群43と、モデルファイル群44と、CIスクリプト45と、パイプライン構成ファイル群48からなる。
The pipeline input files 51 consist of a set of
ファイル更新情報50は、入力ファイル群20のうち、ソースファイル群43やモデルファイル群44で更新のあったファイルの情報が含まれる。
The file update information 50 includes information about files that have been updated in the
以下では入力ファイル群としてモデルファイル群44の例について説明する。
Below, we will explain an example of
CIサーバー70は、バージョン管理サーバー40からCIサーバー70へファイル更新情報50とパイプライン入力ファイル51を受け付けると、CIジョブ実行部71が、パイプライン構成ファイル群48に記述されたそれぞれのCIジョブ73に対して、リソース推定要求81をリソース推定演算部80に送信し、リソース決定演算部90からリソース決定結果91を受け付けて、ジョブ実行マシン群200にCIジョブ73の実行を依頼する。
When the
そして、CIサーバー70は、ジョブ実行マシン群200からジョブ実行結果100を受け付けると、パイプライン実行結果60をバージョン管理サーバー40へ送信する。
Then, when the
図7は、パイプライン構成ファイル500の一例を示す図である。本実施例におけるパイプライン構成ファイル500は、モデルファイル群44からコードを生成するジョブ501が記述されている。
Figure 7 is a diagram showing an example of a pipeline configuration file 500. In this embodiment, the pipeline configuration file 500 describes a
CIジョブ実行部71はこのコード生成ジョブ501に関してリソース推定要求81をリソース推定演算部80に送信し、リソース決定演算部90からリソース決定結果91を受け付け、ジョブ実行マシン群200の実行マシン211にCIジョブ73の実行を依頼する。
The CI
リソース推定演算部80は、CIジョブ実行部71からリソース推定要求81を受け付けると、パイプライン入力ファイル51に存在するモデルファイル群44を用いて計算機リソースの推定を行い、正規化論理複雑度82を算出してリソース決定演算部90へ送信する。
When the resource
リソース決定演算部90は、リソース推定演算部80から正規化論理複雑度82を受け付けると、パイプライン入力ファイル51に含まれる正規化論理複雑度-ジョブ実行マシン対応表47を参照して割り当てるリソースの決定を行う。
When the resource
正規化論理複雑度82は0~1の実数値であり、正規化論理複雑度-ジョブ実行マシン対応表47には、正規化論理複雑度の値とジョブ実行に適した実行マシンを紐づけるための情報が記載されている。 Normalized logical complexity 82 is a real value between 0 and 1, and normalized logical complexity - job execution machine correspondence table 47 contains information for linking the value of normalized logical complexity with an execution machine suitable for job execution.
リソース決定演算部90は正規化論理複雑度82と、正規化論理複雑度-ジョブ実行マシン対応表47を用いて、CIジョブ73を実行する実行マシン211を一意に選択し、リソースの決定を行い、リソース決定結果91をCIジョブ実行部71へ送信する。
The resource
CIジョブ実行部71は、CIジョブ情報112と、ジョブ実行要求110をジョブ実行マシン群200へ送信する。ジョブ実行要求110はCIジョブ73を実行するマシン情報が含まれ、ジョブ実行マシン群200の中から一意に選択される。
The CI
選択された実行マシン211はCIジョブ情報112を基にCIジョブ73を実行した後、ジョブ実行結果100をCIサーバー70に送信する。
The
ジョブ実行マシン群200は、CIジョブ73の処理を行う複数の実行マシン211-1~211-Mから構成されている。
The job
図3は、CIサーバー70の構成の一例を示すブロック図である。CIサーバー70は、プロセッサ11と、メモリ12と、ストレージ装置13と、ネットワーク装置14とを含む計算機である。
Figure 3 is a block diagram showing an example of the configuration of a
メモリ12には、リソース推定演算部80と、リソース決定演算部90と、CIジョブ実行部71がロードされて、プロセッサ11によって実行される。
The resource
プロセッサ11は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ11は、リソース推定演算プログラムに従って処理を実行することでリソース推定演算部80として機能する。他のプログラムについても同様である。さらに、プロセッサ11は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
The processor 11 operates as a functional unit that provides a specific function by executing processing according to the program of each functional unit. For example, the processor 11 functions as a resource
ネットワーク装置14には、ネットワーク15が接続される。ネットワーク15には、図1に示したバージョン管理サーバー40と、ジョブ実行マシン群200と、ユーザー端末2が接続されて相互に通信を行うことができる。
The
図4は、リソース推定演算部80で行われる処理の一例を示すフローチャートである。この処理は、CIサーバー70がバージョン管理サーバー40からファイル更新情報50と、パイプライン入力ファイル51を受信した場合に実行される。
Figure 4 is a flowchart showing an example of processing performed by the resource
まず、CIジョブ実行部71は、CIジョブ73を実行させる計算機リソースを推定するため、リソース推定要求81をリソース推定演算部80に送信する。
First, the CI
リソース推定演算部80は、リソース推定要求81を受信(301)すると、対象ファイル(例えば、モデルファイル)に対して論理複雑度の評価を実施する。リソース推定演算部80は、対象ファイルがモデルファイルの場合、論理複雑度の評価はモデルの入出力ポートサイズ(kB)を測定する(302)。
When the resource
本実施例のCIサーバー70では、リソース推定演算部80がモデルファイルの入力ポートの数と出力ポートの数に各ポートのサイズを乗じた値の総和を入出力ポートサイズとして算出する。これにより、入出力ポートの数が大きいほど、CIジョブ73の処理負荷が増大するので、入出力ポートサイズはモデルファイルの処理負荷の指標として算出される。
In the
なお、リソース推定演算部80は、CIサーバー70が受け付けたファイル更新情報50に基づいて、モデルファイル群44から最新のモデルファイルの情報を取得して入出力ポートサイズを測定する。また、上記では入出力ポートサイズをモデルファイルの処理負荷の指標とする例を示したが、これに限定されるものではなく、入力ポートの数と出力ポートの数の総和をモデルファイルの処理負荷の指標とすることができる。
The resource
測定した入出力ポートのサイズは、評価の簡単化のため、広く周知されている既存の方法を用いて正規化を行って論理複雑度として扱う(303)。正規化された論理複雑度は、正規化論理複雑度82としてリソース決定演算部90へ送信(304)される。
To simplify the evaluation, the measured input/output port size is normalized using a widely known existing method and treated as logical complexity (303). The normalized logical complexity is sent to the resource
図5は、リソース決定演算部90で行われる処理の一例を示すフローチャートである。
Figure 5 is a flowchart showing an example of the processing performed by the resource
リソース決定演算部90は正規化論理複雑度82を受信すると(401)、ジョブ実行マシン群200で使用する計算機リソースの決定処理を実施する。リソース決定演算部90は、正規化論理複雑度82と正規化論理複雑度-ジョブ実行マシン対応表47を比較し(402)、CIジョブ73を実行する実行マシン211を一意に決定する(403)。
When the resource
リソース決定演算部90は、決定したCIジョブ73の実行マシン211の結果をリソース決定結果91としてCIジョブ実行部71へ送信する(404)。
The resource
上記処理によって、CIジョブ実行部71は、受信したリソース決定結果91に基づいてCIジョブ73を割り当てる実行マシン211にジョブ実行要求110と、入力ファイル111と、CIジョブ情報112を送信してCIジョブ73を実行させる。
By the above processing, the CI
CIジョブ実行部71は、CIジョブ73を割り当てた実行マシン211からジョブ実行結果100を受信すると、パイプライン72を構成するCIジョブ73のジョブ実行結果100をまとめてパイプライン実行結果60としてバージョン管理サーバー40へ送信する。
When the CI
図6は、正規化論理複雑度-ジョブ実行マシン対応表47の一例を示す図である。正規化論理複雑度-ジョブ実行マシン対応表47は、実行マシンの性能470と、CIジョブ73-1~73-N毎の正規化論理複雑度471-1~471-Nを一つのエントリに含む。
Figure 6 shows an example of the normalized logical complexity - job execution machine correspondence table 47. The normalized logical complexity - job execution machine correspondence table 47 contains the
実行マシンの性能470には、ジョブ実行マシン群200の実行マシン211毎の性能の指標が格納される。正規化論理複雑度471-1~471-Nには、各CIジョブ73毎に予め設定された正規化論理複雑度の範囲が格納される。
The performance index of each
また、実行マシン211の性能情報は、実行マシン211毎にそれぞれの構成に応じて予め設定される。実行マシン211毎の性能の指標としては、プロセッサの周波数やコア数に基づく指標や、搭載するメモリ容量などを指標とすることができる。
In addition, the performance information of the
リソース決定演算部90は、リソース推定演算部75が算出したCIジョブ73の正規化論理複雑度82と、正規化論理複雑度471の範囲に応じて、CIジョブ73を実行するのに最適な実行マシン211を決定する。例えば、CIジョブ1(73-1)の実行マシンを割り当てる場合、正規化論理複雑度82の値が0.1以上0.4未満であれば実行マシンMにCIジョブ1(73-1)を割り当て、正規化論理複雑度82の値が0.4以上0.8未満であれば実行マシン2にCIジョブ1(73-1)を割り当て、正規化論理複雑度82の値が0.8以上1以下であれば実行マシン1にCIジョブ1(73-1)を割り当てる。
The resource
CIジョブ73毎のマシン割り当ての変更は、対応する正規化論理複雑度471のレンジの閾値を適宜変更することにより実現できる。特に正規化論理複雑度が0の場合は該対応表の中に最適なマシンは存在しない。
Changing the machine allocation for each
正規化論理複雑度が0とは、CIジョブ73の処理対象のファイルに論理が含まれていない場合であり、CIジョブ73として必要な処理がないと判断することが可能である。この場合、リソース決定演算部90は、CIジョブ実行部71には最適な実行マシン211はないという情報が送信される。
A normalized logical complexity of 0 means that the file to be processed by the
正規化論理複雑度は、CIジョブ73の種類毎に正規化論理複雑度-ジョブ実行マシン対応表47の値を設定すればよく、CIジョブ73がコンパイルの場合では、ソースファイルの行数を論理複雑度として算出し、CIジョブ73がテストの場合では、テストベクターを論理複雑度として算出すればよい。
The normalized logical complexity can be calculated by setting a value in the normalized logical complexity - job execution machine correspondence table 47 for each type of
また、論理複雑度は、CIジョブ73を処理する際の実行マシン211の負荷を表す指標であればよく、上記に限定されるものではない。
In addition, logical complexity may be any indicator that represents the load on the
以上のように、本実施例のCIサーバー70は、過去の履歴情報に頼ることなく、各CIジョブ73(各工程)の実行前にモデルファイルやソースファイルを静的に解析することで事前に処理の負荷を正規化論理複雑度として推定し、推定結果に基づいて各CIジョブ73(工程)を割り当てるリソース(実行マシン211)を最適に配分することができる。
As described above, the
<結び>
以上のように、上記実施例の継続的インテグレーションシステムは、以下のような構成とすることができる。
<Conclusion>
As described above, the continuous integration system of the above embodiment can be configured as follows.
(1)ファイル(入力ファイル群20)の構成管理を行うバージョン管理サーバー(40)と、前記バージョン管理サーバー(40)からの要求に応じてCIジョブ(73)の実行をジョブ実行マシン群(200)の実行マシン(211)に依頼するCIサーバー(70)と、前記CIサーバー(70)からの要求に応じて前記CIジョブ(73)を実行するジョブ実行マシン群(200)からなる継続的インテグレーションシステムであって、前記CIサーバー(70)は、前記バージョン管理サーバー(40)から入力ファイルを受け付けて、実行要求のあったパイプライン(72)を構成するCIジョブ(73)毎に、実行に必要なリソースの推定要求(81)を発行し、受信した推定結果に基づいて前記ジョブ実行マシン群(200)の実行マシン(211)にCIジョブ(73)の実行を依頼するCIジョブ実行部(71)と、前記CIジョブ実行部(71)からの推定要求(81)に応じて、前記CIジョブ(73)に割り当てるリソースを推定するリソース推定演算部(80)と、前記リソース推定演算部(80)からの推定結果(正規化論理複雑度822)に応じて、前記CIジョブ(73)に割り当てるリソースを決定するリソース決定演算部(90)を有し、前記リソース推定演算部(80)は、前記CIジョブ実行部(71)からのリソースの推定要求(91)に応じて、前記CIジョブ(73)の前記入力ファイルから論理複雑度(82)を算出し、前記リソース決定演算部(90)は、前記リソース推定演算部(80)から受け取った前記論理複雑度(82)に基づいて、予め設定された論理複雑度とジョブ実行マシン対応情報(47)から前記CIジョブ(73)を実行する実行マシン(211)を決定することを特徴とする継続的インテグレーションシステム。 (1) A continuous integration system comprising a version management server (40) that performs configuration management of a file (input file group 20), a CI server (70) that requests an execution machine (211) of a job execution machine group (200) to execute a CI job (73) in response to a request from the version management server (40), and a job execution machine group (200) that executes the CI job (73) in response to a request from the CI server (70), wherein the CI server (70) receives input files from the version management server (40), issues an estimation request (81) for resources required for execution for each CI job (73) that constitutes a pipeline (72) for which an execution request has been made, and requests an execution machine (211) of the job execution machine group (200) to execute the CI job (73) based on the received estimation result, and a CI job execution unit (71) that executes the CI job (73) based on the received estimation result. A continuous integration system comprising a resource estimation calculation unit (80) that estimates resources to be allocated to the CI job (73) in response to an estimation request (81) from a job execution unit (71), and a resource determination calculation unit (90) that determines resources to be allocated to the CI job (73) in response to an estimation result (normalized logical complexity 822) from the resource estimation calculation unit (80), wherein the resource estimation calculation unit (80) calculates logical complexity (82) from the input file of the CI job (73) in response to the resource estimation request (91) from the CI job execution unit (71), and the resource determination calculation unit (90) determines an execution machine (211) that executes the CI job (73) from a preset logical complexity and job execution machine correspondence information (47) based on the logical complexity (82) received from the resource estimation calculation unit (80).
上記構成により、過去の履歴情報に頼ることなく、日々単位で更新されるモデルファイルやソースファイル等の入力ファイルの更新情報に応じてCIジョブ73を実行するリソースを最適に配分し、各工程(CIジョブ)の処理の実行の際に割り当てるリソースを最適化することが可能となる。
The above configuration makes it possible to optimally allocate resources for executing
(2)上記(1)に記載の継続的インテグレーションシステムであって、前記リソース推定演算部(80)は、前記入力ファイルを処理する際の負荷の指標として前記論理複雑度を算出することを特徴とする継続的インテグレーションシステム。 (2) The continuous integration system described in (1) above, wherein the resource estimation calculation unit (80) calculates the logical complexity as an index of the load when processing the input file.
上記構成により、入力ファイルの種類に応じて論理複雑度を算出することで、パイプライン72を構成する各CIジョブ73間で処理負荷に応じたリソースの割り当てを最適化することができる。
With the above configuration, by calculating the logical complexity according to the type of input file, it is possible to optimize the allocation of resources according to the processing load between each
(3)上記(2)に記載の継続的インテグレーションシステムであって、前記リソース推定演算部(80)は、前記入力ファイルがモデルファイルの場合、入力ポートの数と出力ポートの数に基づいて前記論理複雑度(82)を算出することを特徴とする継続的インテグレーションシステム。 (3) The continuous integration system described in (2) above, wherein the resource estimation calculation unit (80) calculates the logical complexity (82) based on the number of input ports and the number of output ports when the input file is a model file.
上記構成により、入力ファイルがモデルファイルの場合は、入力ポートの数と出力ポートの数の総和の大きさに応じて処理負荷が増大すると予測することができ、論理複雑度の大きさに応じて実行マシン211を決定することができる。
With the above configuration, when the input file is a model file, it is possible to predict that the processing load will increase according to the sum of the number of input ports and the number of output ports, and the
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。 The present invention is not limited to the above-described embodiments, but includes various modified examples. For example, the above-described embodiments are described in detail to clearly explain the present invention, and are not necessarily limited to those having all of the configurations described. It is also possible to replace part of the configuration of one embodiment with the configuration of another embodiment, and it is also possible to add the configuration of another embodiment to the configuration of one embodiment. In addition, the addition, deletion, or replacement of part of the configuration of each embodiment with other configurations can be applied alone or in combination.
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、又は、ICカード、SDカード、DVD等の記録媒体に置くことができる。 The above configurations, functions, processing units, and processing means may be realized in part or in whole in hardware, for example by designing them as integrated circuits. The above configurations and functions may be realized in software by a processor interpreting and executing a program that realizes each function. Information on the programs, tables, files, etc. that realize each function may be stored in a memory, a recording device such as a hard disk or SSD (Solid State Drive), or a recording medium such as an IC card, SD card, or DVD.
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。 In addition, the control lines and information lines shown are those considered necessary for the explanation, and not all control lines and information lines on the product are necessarily shown. In reality, it can be assumed that almost all components are interconnected.
1 ユーザー
2 ユーザー端末
20 入力ファイル群
40 バージョン管理サーバー
41 リポジトリ
42 ブランチ
43 ソースファイル群
44 モデルファイル群
45 CIスクリプト
46 CIジョブ用スクリプト群
47 正規化論理複雑度-ジョブ実行マシン対応表
48 パイプライン構成ファイル群
50 ファイル更新情報
51 パイプライン入力ファイル
60 パイプライン実行結果
70 CIサーバー
71 CIジョブ実行部
72 パイプライン
73-1~73-N CIジョブ1~N
80 リソース推定演算部
81 リソース推定要求
82 正規化論理複雑度
90 リソース決定結果
100 ジョブ実行結果
110 ジョブ実行要求
111 入力ファイル
112 CIジョブ情報
200 ジョブ実行マシン群
211-1~211-M 実行マシン1~M
501 コード生成ジョブ
1
80 Resource estimation calculation unit 81 Resource estimation request 82 Normalized
501 Code generation job
Claims (4)
前記バージョン管理サーバーからの要求に応じてCIジョブの実行をジョブ実行マシン群の実行マシンに依頼するCIサーバーと、
前記CIサーバーからの要求に応じて前記CIジョブを実行するジョブ実行マシン群からなる継続的インテグレーションシステムであって、
前記CIサーバーは、
前記バージョン管理サーバーから入力ファイルを受け付けて、実行要求のあったパイプラインを構成するCIジョブ毎に、実行に必要なリソースの推定要求を発行し、受信した推定結果に基づいて前記ジョブ実行マシン群の実行マシンにCIジョブの実行を依頼するCIジョブ実行部と、
前記CIジョブ実行部からの推定要求に応じて、前記CIジョブに割り当てるリソースを推定するリソース推定演算部と、
前記リソース推定演算部からの推定結果に応じて、前記CIジョブに割り当てるリソースを決定するリソース決定演算部を有し、
前記リソース推定演算部は、
前記CIジョブ実行部からのリソースの推定要求に応じて、前記入力ファイルを処理する際の負荷の指標として、前記CIジョブの前記入力ファイルから論理複雑度を算出し、
前記リソース決定演算部は、
前記リソース推定演算部から受け取った前記論理複雑度に基づいて、予め設定された論理複雑度とジョブ実行マシン対応情報から前記CIジョブを実行する実行マシンを決定することを特徴とする継続的インテグレーションシステム。 A version control server that manages file configurations,
a CI server that requests an execution machine of a job execution machine group to execute a CI job in response to a request from the version management server;
A continuous integration system including a job execution machine group that executes the CI job in response to a request from the CI server,
The CI server includes:
a CI job execution unit that receives an input file from the version management server, issues a request to estimate resources required for execution for each CI job constituting a pipeline for which an execution request has been made, and requests an execution machine of the job execution machine group to execute the CI job based on the received estimation result;
a resource estimation calculation unit that estimates resources to be allocated to the CI job in response to an estimation request from the CI job executing unit;
a resource determination calculation unit that determines resources to be allocated to the CI job in accordance with an estimation result from the resource estimation calculation unit;
The resource estimation calculation unit,
Calculating a logical complexity from the input file of the CI job as an index of a load when processing the input file in response to a resource estimation request from the CI job execution unit;
The resource determination calculation unit is
A continuous integration system characterized by determining an execution machine to execute the CI job based on the logical complexity received from the resource estimation calculation unit, from a preset logical complexity and job execution machine correspondence information.
前記リソース推定演算部は、The resource estimation calculation unit,
前記入力ファイルがモデルファイルの場合、入力ポートの数と出力ポートの数に基づいて前記論理複雑度を算出することを特徴とする継続的インテグレーションシステム。A continuous integration system, characterized in that, when the input file is a model file, the logical complexity is calculated based on the number of input ports and the number of output ports.
前記CIサーバーが、前記バージョン管理サーバーから入力ファイルを受け付けて、実行要求のあったパイプラインを構成するCIジョブ毎に、実行に必要なリソースの推定要求を発行し、受信した推定結果に基づいて前記ジョブ実行マシン群の実行マシンにCIジョブの実行を依頼するCIジョブ実行ステップと、a CI job execution step in which the CI server receives an input file from the version management server, issues a request to estimate resources required for execution for each CI job constituting a pipeline for which execution has been requested, and requests an execution machine of the job execution machine group to execute the CI job based on the received estimation result;
前記CIサーバーが、前記推定要求に応じて、前記CIジョブに割り当てるリソースを推定するリソース推定演算ステップと、a resource estimation calculation step in which the CI server estimates resources to be allocated to the CI job in response to the estimation request;
前記CIサーバーが、前記推定結果に応じて、前記CIジョブに割り当てるリソースを決定するリソース決定演算ステップと、を含み、a resource determination calculation step in which the CI server determines resources to be allocated to the CI job in accordance with the estimation result;
前記リソース推定演算ステップは、The resource estimation calculation step includes:
前記リソースの推定要求に応じて、前記入力ファイルを処理する際の負荷の指標として、前記CIジョブの前記入力ファイルから論理複雑度を算出し、Calculating a logical complexity from the input file of the CI job as an indicator of a load when processing the input file in response to the resource estimation request;
前記リソース決定演算ステップは、The resource determination calculation step includes:
前記論理複雑度に基づいて、予め設定された論理複雑度とジョブ実行マシン対応情報かBased on the logical complexity, a predetermined logical complexity and job execution machine correspondence information are
ら前記CIジョブを実行する実行マシンを決定することを特徴とする継続的インテグレーション方法。The continuous integration method according to claim 1, further comprising: determining an execution machine for executing the CI job from the execution machine;
前記リソース推定演算ステップは、The resource estimation calculation step includes:
前記入力ファイルがモデルファイルの場合、入力ポートの数と出力ポートの数に基づいて前記論理複雑度を算出することを特徴とする継続的インテグレーション方法。A continuous integration method, comprising the steps of: when the input file is a model file, calculating the logical complexity based on the number of input ports and the number of output ports.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2020105577A JP7478037B2 (en) | 2020-06-18 | 2020-06-18 | Continuous integration system and continuous integration method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2020105577A JP7478037B2 (en) | 2020-06-18 | 2020-06-18 | Continuous integration system and continuous integration method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2021197098A JP2021197098A (en) | 2021-12-27 |
| JP7478037B2 true JP7478037B2 (en) | 2024-05-02 |
Family
ID=79195848
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2020105577A Active JP7478037B2 (en) | 2020-06-18 | 2020-06-18 | Continuous integration system and continuous integration method |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP7478037B2 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7839075B2 (en) * | 2022-10-26 | 2026-04-01 | Astemo株式会社 | Continuous integration system and continuous integration method |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170091078A1 (en) | 2015-09-29 | 2017-03-30 | International Business Machines Corporation | Assessing risk of software commits to prioritize verification resources |
| WO2018116460A1 (en) | 2016-12-22 | 2018-06-28 | 株式会社日立製作所 | Continuous integration system and resource control method |
-
2020
- 2020-06-18 JP JP2020105577A patent/JP7478037B2/en active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170091078A1 (en) | 2015-09-29 | 2017-03-30 | International Business Machines Corporation | Assessing risk of software commits to prioritize verification resources |
| WO2018116460A1 (en) | 2016-12-22 | 2018-06-28 | 株式会社日立製作所 | Continuous integration system and resource control method |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2021197098A (en) | 2021-12-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CA3090095C (en) | Methods and systems to determine and optimize reservoir simulator performance in a cloud computing environment | |
| US11257565B2 (en) | Management of test resources to perform testing of memory components under different temperature conditions | |
| CN108205469B (en) | A resource allocation method and server based on MapReduce | |
| US11514219B1 (en) | System and method for assertion-based formal verification using cached metadata | |
| US11334349B2 (en) | Removing feature flag-related codebase from applications | |
| CN110083535A (en) | A kind of method for testing software and device | |
| CN108647137B (en) | An operation performance prediction method, device, medium, equipment and system | |
| CN119271545A (en) | Code evaluation and conversion method, system and medium applied to heterogeneous multi-core chips | |
| US20200194092A1 (en) | Multi-dimensional usage space testing of memory components | |
| JP7478037B2 (en) | Continuous integration system and continuous integration method | |
| US20110191094A1 (en) | System and method to evaluate and size relative system performance | |
| CN110737509B (en) | Thermal migration processing method and device, storage medium and electronic equipment | |
| Schirmer et al. | Elastibench: Scalable continuous benchmarking on cloud faas platforms | |
| JP2014021847A (en) | Resource management device, resource management method and program | |
| CN119943127B (en) | Storage device testing method and device, computer device and storage medium | |
| JP7839075B2 (en) | Continuous integration system and continuous integration method | |
| CN114996102A (en) | System availability assessment method, device, equipment and storage medium | |
| JP7385536B2 (en) | Software development support device and software development support method | |
| CN119065784B (en) | Virtual machine creation method, device, equipment, storage medium and product | |
| JP5906844B2 (en) | Computer parameter tuning program, method, and apparatus | |
| WO2023112386A1 (en) | Simulation method | |
| WO2025196763A1 (en) | Computer code execution operations quantification method and system | |
| JP2022183757A (en) | Continuous integration system and continuous integration method | |
| JP2006178663A (en) | Information processing apparatus, information processing method, verification apparatus, and verification method | |
| CN119806975A (en) | Cloud platform performance test result analysis method, device, electronic equipment and medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221121 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231130 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231212 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240207 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240326 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240419 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7478037 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |