(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024075116
(43)【公開日】2024-06-03
(54)【発明の名称】パイプライン設定更新装置、パイプライン設定更新方法、及びプログラム
(51)【国際特許分類】
G06F 8/71 20180101AFI20240527BHJP
【FI】
G06F8/71
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022186322
(22)【出願日】2022-11-22
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
(71)【出願人】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】古賀 雄一郎
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC08
5B376DA12
(57)【要約】
【課題】ビルド対象のプログラムの依存関係に応じて、パイプライン設定を更新する技術を提供すること。
【解決手段】本開示の一態様によるパイプライン設定更新装置は、継続的インテグレーションにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置であって、開発対象プログラムを構成する1以上のプログラムモジュールのソースコードがバージョン管理システムに登録されると、前記1以上のプログラムモジュールに含まれる各プログラムモジュール間の依存関係を表す依存関係情報を作成するように構成されている依存関係情報作成部と、前記依存関係情報に基づいて、前記1以上のプログラムモジュールを前記パイプライン処理により順にビルドする場合の実行順を決定するように構成されている実行順決定部と、前記実行順に基づいて、前記設定情報を更新するように構成されている設定更新部と、を有する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
継続的インテグレーションにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置であって、
開発対象プログラムを構成する1以上のプログラムモジュールのソースコードがバージョン管理システムに登録されると、前記1以上のプログラムモジュールに含まれる各プログラムモジュール間の依存関係を表す依存関係情報を作成するように構成されている依存関係情報作成部と、
前記依存関係情報に基づいて、前記1以上のプログラムモジュールを前記パイプライン処理により順にビルドする場合の実行順を決定するように構成されている実行順決定部と、
前記実行順に基づいて、前記設定情報を更新するように構成されている設定更新部と、
を有するパイプライン設定更新装置。
【請求項2】
前記開発対象プログラムを構成する1以上のプログラムモジュールのソースコードがバージョン管理システムに登録されると、前記1以上のプログラムモジュールに含まれる各プログラムモジュールに関して、前記プログラムモジュールが依存する他のプログラムモジュールの識別情報を表す構成情報を取得するように構成されている取得部を有し、
前記依存関係情報作成部は、
前記1以上のプログラムモジュールに含まれる各プログラムモジュールの構成情報に基づいて、前記依存関係情報を作成するように構成されている請求項1に記載のパイプライン設定更新装置。
【請求項3】
前記取得部は、
前記1以上のプログラムモジュールに含まれる各プログラムモジュールに関して、前記プログラムモジュールのソースコード毎に作成されたプロジェクトから前記構成情報を取得するように構成されている請求項2に記載のパイプライン設定更新装置。
【請求項4】
前記実行順決定部は、
前記依存関係情報に基づいて、互いに依存関係がないプログラムモジュールに関しては予め決められた順序で前記実行順を決定し、依存関係があるプログラムモジュールに関しては前記プログラムモジュールよりも前記プログラムモジュールが依存する他のプログラムモジュールの方が先の順序となるように前記実行順を決定するように構成されている請求項2又は3に記載のパイプライン設定更新装置。
【請求項5】
前記設定更新部は、
前記設定情報に含まれる情報のうち、前記パイプライン処理における前記1以上のプログラムモジュールのビルド実行順を表す情報を、前記実行順で更新するように構成されている請求項4に記載のパイプライン設定更新装置。
【請求項6】
継続的インテグレーションにおけるパイプライン処理の設定情報を更新するパイプライン設定更新方法であって、
開発対象プログラムを構成する1以上のプログラムモジュールのソースコードがバージョン管理システムに登録されると、前記1以上のプログラムモジュールに含まれる各プログラムモジュール間の依存関係を表す依存関係情報を作成する依存関係情報作成手順と、
前記依存関係情報に基づいて、前記1以上のプログラムモジュールを前記パイプライン処理により順にビルドする場合の実行順を決定する実行順決定手順と、
前記実行順に基づいて、前記設定情報を更新する設定更新手順と、
をコンピュータが実行するパイプライン設定更新方法。
【請求項7】
継続的インテグレーションにおけるパイプライン処理の設定情報を更新するプログラムであって、
開発対象プログラムを構成する1以上のプログラムモジュールのソースコードがバージョン管理システムに登録されると、前記1以上のプログラムモジュールに含まれる各プログラムモジュール間の依存関係を表す依存関係情報を作成する依存関係情報作成手順と、
前記依存関係情報に基づいて、前記1以上のプログラムモジュールを前記パイプライン処理により順にビルドする場合の実行順を決定する実行順決定手順と、
前記実行順に基づいて、前記設定情報を更新する設定更新手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、パイプライン設定更新装置、パイプライン設定更新方法、及びプログラムに関する。
【背景技術】
【0002】
プログラムの開発手法の1つとして、継続的インテグレーション(CI:Continuous Integration)と呼ばれる手法が知られている。CIを実現するプログラムはCIツール等と呼ばれ、近年、プログラム開発の現場で広く用いられている。なお、CIに関する従来技術の1つとして、例えば、不具合に係る内容等が管理されるチケットの属性情報に応じて、CIにおける自動実行を効率的に実施する技術が知られている(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
CIツールではビルドやテスト等を自動実行することができるが、ビルド対象となるプログラムの依存関係が変更された場合、その都度、ビルドの実行順等が定義されるパイプライン設定を手動で更新する必要がある。
【0005】
本開示は、上記の点に鑑みてなされたもので、ビルド対象のプログラムの依存関係に応じて、パイプライン設定を更新する技術を提供する。
【課題を解決するための手段】
【0006】
本開示の一態様によるパイプライン設定更新装置は、継続的インテグレーションにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置であって、開発対象プログラムを構成する1以上のプログラムモジュールのソースコードがバージョン管理システムに登録されると、前記1以上のプログラムモジュールに含まれる各プログラムモジュール間の依存関係を表す依存関係情報を作成するように構成されている依存関係情報作成部と、前記依存関係情報に基づいて、前記1以上のプログラムモジュールを前記パイプライン処理により順にビルドする場合の実行順を決定するように構成されている実行順決定部と、前記実行順に基づいて、前記設定情報を更新するように構成されている設定更新部と、を有する。
【発明の効果】
【0007】
ビルド対象のプログラムの依存関係に応じて、パイプライン設定を更新する技術が提供される。
【図面の簡単な説明】
【0008】
【
図1】モジュールの依存関係とビルドの実行順との関係の一例を示す図である。
【
図2】本実施形態に係る開発支援システムの全体構成の一例を示す図である。
【
図3】本実施形態に係るパイプライン設定更新システムのハードウェア構成の一例を示す図である。
【
図4】本実施形態に係るパイプライン設定更新アプリケーションの機能構成の一例を示す図である。
【
図6】本実施形態に係るパイプライン設定更新アプリケーションによって実行される処理の一例を示すフローチャートである。
【
図8】パイプライン設定ファイルの更新の一例を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の一実施形態について説明する。
【0010】
<継続的インテグレーション/継続的デリバリー>
まず、継続的インテグレーション(CI)とそれに関連又は類似する開発手法である継続的デリバリー(CD:Continuous Delivery)の概略について説明する。
【0011】
CI及びCDはいずれもプログラム開発手法の1つであり、ビルド、テスト、デプロイといった処理(ジョブ)の内容をスクリプトとして定義し、ソースコードを管理するバージョン管理システム(VCS:Version Control System)への登録(コミット)等をトリガーにスクリプトを自動で実行する手法のことである。1つ以上のジョブの実行で実現される一連の処理は「パイプライン」又は「パイプライン処理」と呼ばれる。一般に、CIはビルドやテストを自動化する手法のことを指し、CDはデプロイを自動化する手法のことを指す。
【0012】
CI/CDを実現するプログラムはそれぞれCIツール/CDツールと呼ばれる。これらのツールでは、パイプライン設定ファイルに定義された処理内容(スクリプト)やその処理の実行順等に従ってジョブが実行される。このため、ユーザは、自動化したいジョブの処理内容やその処理の実行順等をパイプライン設定ファイルに定義する必要がある。
【0013】
以下では、複数のプログラムで構成されるアプリケーションを開発することを想定し、CIツールにより各プログラムのビルドを自動実行する場合を対象とする。このため、以下では、開発対象のアプリケーションを構成する各プログラム(ライブラリ等も含む。)のことを「モジュール」とも呼ぶことにする。
【0014】
<モジュールの依存関係とビルドの実行順との関係>
複数のモジュールでアプリケーションが構成されている場合、これら複数のモジュールの中には依存関係を持つモジュールが存在することが多い。例えば、或るモジュールが別のモジュールの処理結果等を参照しており、モジュール間に親子関係がある場合等である。このような場合、参照元である親モジュールは参照先である子モジュールに依存していることになり、親モジュールのビルドよりも子モジュールのビルドを先に実行する必要がある。
【0015】
例えば、
図1に示すように、モジュールA、モジュールB、及びモジュールCが存在し、モジュールAはモジュールBに依存し、モジュールBはモジュールCに依存しているものとする。この場合、モジュールC→モジュールB→モジュールAの順にビルドを実行する必要する。
【0016】
このとき、例えば、モジュールBが依存するモジュールとしてモジュールDが追加された場合、モジュールC→モジュールD→モジュールB→モジュールA、又は、モジュールD→モジュールC→モジュールB→モジュールAの順にビルドを実行する必要がある。このため、ユーザは、モジュールDの追加に伴って、CIツールのパイプライン設定ファイルに対してモジュールDをビルドするためのビルド実行内容の定義を追加すると共に、当該パイプライン設定ファイルに定義されているビルド実行順を変更する必要がある。
【0017】
以上のように、開発対象のアプリケーションを構成するモジュールの追加・変更・削除に伴ってそれらのモジュールの依存関係が変更された場合、ユーザはパイプライン設定ファイルを手動で更新する必要があり、その更新作業に手間を要している。そこで、以下では、CIツールによりプログラムのビルドを自動実行する際に、ビルド対象のモジュールの依存関係に応じて、パイプライン設定ファイルを自動的に更新することができる開発支援システム1について説明する。
【0018】
<開発支援システム1の全体構成例>
本実施形態に係る開発支援システム1の全体構成例を
図2に示す。
図2に示すように、本実施形態に係る開発支援システム1には、パイプライン設定更新システム10と、継続的インテグレーションシステム20と、バージョン管理システム30と、開発者端末40とが含まれる。ここで、パイプライン設定更新システム10と継続的インテグレーションシステム20との間、バージョン管理システム30と開発者端末40との間、継続的インテグレーションシステム20とバージョン管理システム30との間は、例えば、社内ネットワーク等といった通信ネットワークを介して相互に通信可能に接続される。
【0019】
パイプライン設定更新システム10は、モジュールのソースコード(又は、ソースコードを含む必要なファイル群を管理するプロジェクトでもよい。)がバージョン管理システム30に登録された場合、開発対象のアプリケーションを構成する各モジュールの依存関係からビルド実行順を決定した上で、このビルド実行順等により、後述するCIツール210のパイプライン設定ファイル212を更新する。また、パイプライン設定更新システム10は、パイプライン設定ファイル212を更新した後、開発対象のアプリケーションを構成する各モジュールのビルドを順に実行するためのパイプライン実行指示を継続的インテグレーションシステム20に送信する。
【0020】
ここで、パイプライン設定更新システム10は、パイプライン設定更新アプリケーション110と、依存関係テーブル120とを有している。パイプライン設定更新アプリケーション110は、ビルド実行順の決定、パイプライン設定ファイル212の更新、パイプライン実行指示等を行うプログラムである。依存関係テーブル120は、開発対象のアプリケーションを構成する各モジュールの依存関係を表す情報が格納されるテーブル形式のデータである。なお、パイプライン設定更新アプリケーション110と依存関係テーブル120の詳細については後述する。
【0021】
継続的インテグレーションシステム20は、パイプライン設定更新システム10からパイプライン実行指示を受信した場合、CIツール210により、開発対象のアプリケーションを構成する各モジュールのビルドをビルドツール220に対して順に指示する。ここで、CIツール210にはビルド実行指示部211とパイプライン設定ファイル212とが含まれており、ビルド実行指示部211は、パイプライン設定ファイル212に定義されているビルド実行内容とビルド実行順に従って、ビルドツール220に対して各モジュールのビルドを順に指示する。これにより、ビルドツール220によって当該ビルド実行順に各モジュール(のソースコード)のビルドが実行され、パイプライン処理が実現される。
【0022】
なお、CIツール210としては既知の任意のCIツールを用いることが可能であり、例えば、GitLab、Jenkins、Travis CI等を用いることが可能である。また、ビルドツール220としては既知の任意のビルドツールを用いることが可能であり、例えば、Maven、Ant、Gradle等を用いることが可能である。
【0023】
バージョン管理システム30は、モジュールのソースコード及びそのバージョンを管理するリポジトリを備えている。バージョン管理システム30は、モジュールのソースコード(又は、そのプロジェクト)がリポジトリに登録された場合、登録通知をパイプライン設定更新システム10に送信する。なお、バージョン管理システム30としては既知の任意のバージョン管理システムを用いることが可能であり、例えば、Git、GitHub等を用いることが可能である。
【0024】
開発者端末40は、モジュールのソースコード(又は、そのプロジェクト)をバージョン管理システム30のリポジトリに登録する者(例えば、モジュールの開発者等)が利用する端末である。
【0025】
なお、
図2に示す開発支援システム1の全体構成は一例であって、開発支援システム1の全体構成はこれに限られるものではない。例えば、パイプライン設定更新システム10、継続的インテグレーションシステム20及びバージョン管理システム30のうちの2つ以上のシステムが一体で構成されていてもよい。
【0026】
<パイプライン設定更新システム10のハードウェア構成例>
本実施形態に係るパイプライン設定更新システム10のハードウェア構成例を
図3に示す。
図3に示すように、本実施形態に係るパイプライン設定更新システム10は、入力装置11と、表示装置12と、外部I/F13と、通信I/F14と、RAM(Random Access Memory)15と、ROM(Read Only Memory)16と、補助記憶装置17と、プロセッサ18とを有する。これらの各ハードウェアは、それぞれがバス19を介して通信可能に接続される。
【0027】
入力装置11は、例えば、キーボード、マウス、タッチパネル、物理ボタン等である。表示装置12は、例えば、ディスプレイ、表示パネル等である。なお、パイプライン設定更新システム10は、例えば、入力装置11及び表示装置12のうちの少なくとも一方を有していなくてもよい。
【0028】
外部I/F13は、記録媒体13a等の外部装置とのインタフェースである。記録媒体13aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0029】
通信I/F14は、パイプライン設定更新システム10を通信ネットワークに接続するためのインタフェースである。RAM15は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM16は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。補助記憶装置17は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の不揮発性の記憶装置である。プロセッサ18は、例えば、CPU(Central Processing Unit)等の各種演算装置である。
【0030】
なお、
図3に示すハードウェア構成は一例であって、パイプライン設定更新システム10のハードウェア構成はこれに限られるものではない。例えば、パイプライン設定更新システム10は、複数の補助記憶装置17や複数のプロセッサ18を有していてもよいし、図示したハードウェアの一部を有していなくてもよいし、図示したハードウェア以外の種々のハードウェアを有していてもよい。
【0031】
<パイプライン設定更新アプリケーション110の機能構成例>
図4に示すように、本実施形態に係るパイプライン設定更新アプリケーション110は、プロセッサ18等に実行させる処理により、登録通知受信部111と、モジュール構成情報取得部112と、依存関係テーブル作成・更新部113と、ビルド実行順決定部114と、パイプライン設定ファイル更新部115と、パイプライン実行指示部116とを実現することができる。
【0032】
登録通知受信部111は、バージョン管理システム30からの登録通知を受信する。
【0033】
モジュール構成情報取得部112は、登録通知受信部111によって登録通知が受信されると、開発対象のアプリケーションを構成する各モジュールに関して、当該モジュールのソースコード又はプロジェクトからモジュール構成情報を取得する。モジュール構成情報とは、当該モジュールが依存するモジュール(以下、依存モジュールともいう。)を表す情報のことである。
【0034】
ただし、開発対象のアプリケーションを構成する各モジュールに関して、バージョン管理システム30には複数バージョンのソースコード又はプロジェクトが登録され得る。このため、モジュール構成情報取得部112は、開発対象のアプリケーションを構成する各モジュールに関して、当該モジュールの最新バージョンのソースコード又はプロジェクトからモジュール構成情報を取得する。
【0035】
依存関係テーブル作成・更新部113は、モジュール構成情報取得部112によってモジュール構成情報が取得されると、それらのモジュール構成情報を用いて新たな依存関係テーブル120を作成し、既存の依存関係テーブル120を上書き更新する。ただし、既存の依存関係テーブル120が存在しない場合、依存関係テーブル作成・更新部113は、新たな依存関係テーブル120をそのまま補助記憶装置17等の記憶領域に保存すればよい。
【0036】
ビルド実行順決定部114は、依存関係テーブル作成・更新部113によって作成・更新された依存関係テーブル120を用いて、開発対象のアプリケーションを構成する各モジュールのビルド実行順を決定する。
【0037】
パイプライン設定ファイル更新部115は、ビルド実行順決定部114によってビルド実行順が決定されると、開発対象のアプリケーションを構成する各モジュールのビルド実行内容の定義に必要な情報と当該ビルド実行順とを用いて、パイプライン設定ファイル212を更新する。ここで、各モジュールのビルド実行内容の定義に必要な情報とは、ビルド実行内容としてパイプライン設定ファイル212に定義されるパラメータとその値のことである。
【0038】
パイプライン実行指示部116は、パイプライン設定ファイル更新部115によってパイプライン設定ファイル212が更新されると、パイプライン実行指示を継続的インテグレーションシステム20に送信する。
【0039】
<依存関係テーブル120>
一例として、モジュールA、モジュールB、モジュールC、モジュールDが存在し、これらのモジュール名をそれぞれ「moduleA」、「moduleB」、「moduleC」、「moduleD」とする。このとき、モジュールAがモジュールBに依存し、モジュールBがモジュールC及びDに依存している場合の依存関係テーブル120を
図5に示す。
図5に示すように、依存関係テーブル120では、開発対象のアプリケーションを構成する各モジュールのモジュール名を表す「モジュール名」と、そのモジュール名のモジュールが依存しているモジュール(依存モジュール)のモジュール名を表す「依存モジュール名」とが対応付けられている。
【0040】
例えば、モジュール名「moduleA」には依存モジュール名「moduleB」が対応付けられている。これは、モジュールAはモジュールBに依存していることを表している。
【0041】
また、例えば、モジュール名「moduleB」には依存モジュール名「moduleC」及び「moduleD」が対応付けられている。これは、モジュールBはモジュールCとモジュールDに依存していることを表している。
【0042】
このように、依存関係テーブル120には、開発対象のアプリケーションを構成する各モジュールの依存関係を表す情報が格納されている。
【0043】
<パイプライン設定更新アプリケーション110によって実行される処理>
一例として、以下の条件の下でパイプライン設定更新アプリケーション110によって実行される処理について、
図6を参照しながら説明する。
【0044】
・開発対象のアプリケーションのプログラミング言語はJavaであるものとする。
【0045】
・ビルドツール220はMavenであるものとする。
【0046】
・CIツール210はGitLabであるものとする。
【0047】
・開発者はモジュール毎にMavenプロジェクトを作成し、それらのMavenプロジェクトがバージョン管理システム30に登録されるものとする。
【0048】
・
図1に示すように、モジュールA、モジュールB、モジュールCが存在し、モジュールAがモジュールBに依存し、モジュールBがモジュールCに依存している場合に、モジュールBの依存モジュールとしてモジュールDが追加されるものとする。
【0049】
ただし、上記の条件はいずれも一例であって、以下で説明する処理は上記の条件に限定されるものではない。例えば、プログラミング言語はJavaに限られるものではなく、ビルドが存在するプログラミング言語であれば任意のプログラミング言語を対象とすることが可能である。また、ビルドツール220はMavenに限られるものではなく、またCIツール210はGitLabに限られるものではない。
【0050】
このとき、或る開発者の開発者端末40によってモジュールDのソースコードが含まれるMavenプロジェクトがバージョン管理システム30に登録され、その登録通知がパイプライン設定更新システム10に送信されたものとする。
【0051】
まず、登録通知受信部111は、バージョン管理システム30からの登録通知を受信する(ステップS101)。
【0052】
次に、モジュール構成情報取得部112は、開発対象のアプリケーションを構成する各モジュール(つまり、モジュールA、モジュールB、モジュールC、モジュールD)に関して、当該モジュールのMavenプロジェクトからモジュール構成情報を取得する(ステップS102)。ただし、同一モジュールのMavenプロジェクトが複数存在する場合、モジュール構成情報取得部112は、最新バージョンのMavenプロジェクトからモジュール構成情報を取得する。
【0053】
ここで、Mavenプロジェクトには、当該モジュールのソースコードの他に、当該モジュールのモジュール構成情報が定義されたpom.xmlと呼ばれるファイルが含まれている。このため、モジュール構成情報取得部112は、当該モジュールのpom.xmlから当該モジュールのモジュール構成情報を取得すればよい。
【0054】
モジュールA~モジュールDのpom.xmlの一例を
図7(a)~
図7(d)にそれぞれ示す。
【0055】
図7(a)に示すように、モジュールAのpom.xmlには、モジュールAの依存モジュール(ライブラリも含む。)が定義される依存情報1100が含まれる。このため、モジュール構成情報取得部112は、モジュールAのpom.xmlに含まれる依存情報1100を解析し、その解析結果として得られた依存モジュールの識別情報(例えば、モジュール名やモジュールID等)をモジュール構成情報として取得すればよい。
図7(a)に示す例では、依存情報1100にはアーティファクトIDとして依存モジュールのモジュール名「moduleB」が定義されており、このモジュール名「moduleB」がモジュールAのモジュール構成情報として取得される。
【0056】
同様に、
図7(b)に示すように、モジュールBのpom.xmlには、モジュールAの依存モジュール(ライブラリも含む。)が定義される依存情報1200が含まれる。このため、モジュール構成情報取得部112は、モジュールBのpom.xmlに含まれる依存情報1200を解析し、その解析結果として得られた依存モジュールの識別情報をモジュール構成情報として取得すればよい。
図7(b)に示す例では、依存情報1200にはアーティファクトIDとして依存モジュールのモジュール名「moduleC」及び「moduleD」が定義されており、これらのモジュール名「moduleC」及び「moduleD」がモジュールBのモジュール構成情報として取得される。
【0057】
一方で、
図7(c)及び(d)に示すように、モジュールCのpom.xmlとモジュールDのpom.xmlには依存情報が含まれていない。このため、例えば、「依存関係なし」を表す情報がモジュールCのモジュール構成情報として取得され、同様に「依存関係なし」を表す情報がモジュールDのモジュール構成情報として取得される。ただし、この場合、モジュール構成情報が取得されなくてもよい。
【0058】
次に、依存関係テーブル作成・更新部113は、上記のステップS102で取得されたモジュール構成情報を用いて新たな依存関係テーブル120を作成し、既存の依存関係テーブル120を上書き更新する(ステップS103)。すなわち、依存関係テーブル作成・更新部113は、モジュールAのモジュール構成情報~モジュールDのモジュール構成情報を用いて、
図5に示す依存関係テーブル120を作成し、既存の依存関係テーブル120を上書き更新する。
【0059】
次に、ビルド実行順決定部114は、上記のステップS103で作成・更新された依存関係テーブル120を用いて、開発対象のアプリケーションを構成する各モジュールのビルド実行順を決定する(ステップS104)。例えば、ビルド実行順決定部114は、互いに依存関係がないモジュールに関しては予め決められた順(例えば、モジュール名やモジュールID順)でビルド順を決定し、依存関係があるモジュールに関しては依存モジュールが先、その依存モジュールに依存するモジュールが後となるようにビルド順を決定する。
【0060】
例えば、
図5に示す依存関係テーブル120では、モジュールBのビルド順はモジュールAのビルド順よりも先となる。また、モジュールCのビルド順とモジュールDのビルド順はモジュールBのビルド順よりも先となる。一方で、モジュールCとモジュールDは互いに依存関係がないため、予め決められた順(例えば、モジュール名順)にビルド順が決定され、モジュールCのビルド順はモジュールDのビルド順よりも先となる。したがって、
図5に示す依存関係テーブル120では、モジュールC→モジュールD→モジュールB→モジュールAとビルド順が決定される。
【0061】
次に、パイプライン設定ファイル更新部115は、開発対象のアプリケーションを構成する各モジュールのビルド実行内容の定義に必要な情報と、上記のステップS104で決定されたビルド順とを用いて、パイプライン設定ファイル212を更新する(ステップS105)。
【0062】
上記のステップS105における更新前のパイプライン設定ファイル212の一例と更新後のパイプライン設定ファイル212の一例とを
図8に示す。
図8に示すように、パイプライン設定ファイル212には、ビルド実行順定義部310と、ビルド実行内容定義部320とが含まれる。
【0063】
更新前のパイプライン設定ファイル212のビルド実行内容定義部320には、モジュールAのビルド実行内容320Aと、モジュールBのビルド実行内容320Bと、モジュールCのビルド実行内容320Cとが定義されている。また、更新前のパイプライン設定ファイル212のビルド実行順定義部310には、ビルド実行内容320Cで定義されたジョブ(ビルド)のステージ名「buildC」と、ビルド実行内容320Bで定義されたジョブ(ビルド)のステージ名「buildB」と、ビルド実行内容320Aで定義されたジョブ(ビルド)のステージ名「buildA」とが上から順に定義されている。これは、モジュールC→モジュールB→モジュールAの順にビルドを実行することを表している。
【0064】
このとき、パイプライン設定ファイル更新部115は、開発対象のアプリケーションを構成する各モジュールのビルド実行内容の定義に必要な情報を用いてビルド実行内容定義部320を更新すると共に、上記のステップS104で決定されたビルド順を用いてビルド実行順定義部310を更新する。具体的には、パイプライン設定ファイル更新部115は、モジュールDのビルド実行内容の定義に必要な情報を用いてビルド実行内容320Dをビルド実行内容定義部320に追加すると共に、上記のステップS104で決定されたビルド順「モジュールC→モジュールD→モジュールB→モジュールA」を用いてビルド実行内容320Dで定義されたジョブ(ビルド)のステージ名「buildD」を「buildC」の後に追加する。これにより、更新後のパイプライン設定ファイル212が得られ、このパイプライン設定ファイル212によって「モジュールC→モジュールD→モジュールB→モジュールA」の順にビルドを実行することが可能となる。
【0065】
なお、開発対象のアプリケーションを構成する各モジュールのビルド実行内容の定義に必要な情報に含まれる一部のパラメータとその値は予め決められており、他のパラメータとその値は当該モジュールのMavenプロジェクトから取得可能である。例えば、
図8に示す例では、パラメータ「script」の値は予め決められている。一方で、例えば、パラメータ「image」や「artifacts」、「stage」の値はMavenプロジェクトから取得可能である。
【0066】
そして、パイプライン実行指示部116は、パイプライン実行指示を継続的インテグレーションシステム20に送信する(ステップS106)。これにより、継続的インテグレーションシステム20では、ビルド実行指示部211により、パイプライン設定ファイル212のビルド実行順定義部310に定義されているビルド実行順に従って、ビルド実行内容定義部320に定義されているビルド実行内容のビルド指示がビルドツール220に対して行われ、当該ビルドツール220によりモジュール(のソースコード)のビルドが行われる。
【0067】
<まとめ>
以上のように、本実施形態に係る開発支援システム1では、開発対象のアプリケーションを構成するモジュールをビルドする際に、それらのモジュールの依存関係に応じて、CIツール210のパイプライン設定ファイル212を更新し、ビルドの実行順を動的に変更することができる。このため、開発対象のアプリケーションを構成するモジュールの依存関係に変更が生じた場合であっても、ユーザがその都度パイプライン設定ファイル212を手動で更新する必要がなくなり、その手間が削減される。
【0068】
なお、上記の実施形態では、開発対象のアプリケーションを構成するモジュールの追加に伴って依存関係が変更された場合について説明したが、これに限られるものではなく、モジュールの変更や削除に伴って依存関係が変更された場合にも同様に適用することが可能である。
【0069】
また、上記の実施形態では、既にパイプライン設定ファイル212が存在し、これを更新する場合について説明したが、例えば、パイプライン設定ファイル212が存在せず、これを新規に作成する場合にも同様に適用することが可能である。
【0070】
更に、上記の実施形態では、ソースコード又はプロジェクトがバージョン管理システム30に登録された場合、その登録通知がパイプライン設定更新システム10に送信されるものとしたが、これに限られるものではなく、例えば、パイプライン設定更新システム10がバージョン管理システム30を定期的にポーリングし、ソースコード又はプロジェクトの新規登録有無を確認してもよい。
【0071】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0072】
1 開発支援システム
10 パイプライン設定更新システム
11 入力装置
12 表示装置
13 外部I/F
13a 記録媒体
14 通信I/F
15 RAM
16 ROM
17 補助記憶装置
18 プロセッサ
19 バス
20 継続的インテグレーションシステム
30 バージョン管理システム
40 開発者端末
110 パイプライン設定更新アプリケーション
111 登録通知受信部
112 モジュール構成情報取得部
113 依存関係テーブル作成・更新部
114 ビルド実行順決定部
115 パイプライン設定ファイル更新部
116 パイプライン実行指示部
120 依存関係テーブル
210 CIツール
211 ビルド実行指示部
212 パイプライン設定ファイル
220 ビルドツール