(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024147348
(43)【公開日】2024-10-16
(54)【発明の名称】パイプライン設定更新装置、パイプライン設定更新方法、及びプログラム
(51)【国際特許分類】
G06F 8/65 20180101AFI20241008BHJP
【FI】
G06F8/65
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023060299
(22)【出願日】2023-04-03
(71)【出願人】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】中里 龍馬
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AA11
5B376AA25
5B376AA32
5B376CA45
5B376CA46
(57)【要約】
【課題】ブランチの追加に応じて、パイプライン設定を更新する技術を提供すること。
【解決手段】本開示の一態様によるパイプライン設定更新装置は、継続的デリバリーにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置であって、デプロイ先毎に前記デプロイ先にデプロイするプログラムのソースコードが管理されるリリースブランチがリポジトリに追加されたことを検知する検知部と、前記リリースブランチがリポジトリに追加されたことが検知された場合、前記リリースブランチに対応するデプロイ先にプログラムをデプロイするためのパイプライン処理の実行に必要な情報を前記設定情報に追加し、前記設定情報を更新する設定更新部と、を有する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
継続的デリバリーにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置であって、
デプロイ先毎に前記デプロイ先にデプロイするプログラムのソースコードが管理されるリリースブランチがリポジトリに追加されたことを検知する検知部と、
前記リリースブランチがリポジトリに追加されたことが検知された場合、前記リリースブランチに対応するデプロイ先にプログラムをデプロイするためのパイプライン処理の実行に必要な情報を前記設定情報に追加し、前記設定情報を更新する設定更新部と、
を有するパイプライン設定更新装置。
【請求項2】
前記デプロイ先の環境に関する情報を表す環境情報を記憶する環境情報記憶部を有し、
前記設定更新部は、
前記設定情報を更新するための更新テンプレートと、前記リポジトリに追加されたリリースブランチに対応するデプロイ先の環境情報とを用いて、前記設定情報を更新する、請求項1に記載のパイプライン設定更新装置。
【請求項3】
前記設定更新部は、
前記リポジトリに追加されたリリースブランチに対応するデプロイ先の名前と、前記リポジトリに追加されたリリースブランチに対応するデプロイ先の環境情報とを前記更新テンプレートに対して設定し、前記設定後の更新テンプレートに含まれる情報を前記設定情報に追加することで、前記設定情報を更新する、請求項2に記載のパイプライン設定更新装置。
【請求項4】
前記更新テンプレートには、処理内容の雛形と、実行条件の雛形とが含まれており、
前記設定更新部は、
前記リポジトリに追加されたリリースブランチに対応するデプロイ先の名前を前記処理内容の雛形と前記実行条件の雛形とに設定し、前記リポジトリに追加されたリリースブランチに対応するデプロイ先の環境情報を前記処理内容の雛形に更に設定した後、前記設定後の処理内容の雛形と実行条件の雛形を前記設定情報に追加することで、前記設定情報を更新する、請求項3に記載のパイプライン設定更新装置。
【請求項5】
前記デプロイ先の環境は仮想マシンであり、
前記環境情報には、前記仮想マシンのアドレスと、前記仮想マシンにログインするための情報とが少なくとも含まれる、請求項2乃至4の何れか一項に記載のパイプライン設定更新装置。
【請求項6】
前記環境情報には、前記リポジトリに追加されたリリースブランチに対応するデプロイ先にデプロイするプログラムのソースコードが格納されている場所を示す情報と、前記リポジトリに追加されたリリースブランチに対応するデプロイ先にデプロイするプログラムが格納される場所を示す情報とが含まれる、請求項5に記載のパイプライン設定更新装置。
【請求項7】
継続的デリバリーにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置が、
デプロイ先毎に前記デプロイ先にデプロイするプログラムのソースコードが管理されるリリースブランチがリポジトリに追加されたことを検知する検知手順と、
前記リリースブランチがリポジトリに追加されたことが検知された場合、前記リリースブランチに対応するデプロイ先にプログラムをデプロイするためのパイプライン処理の実行に必要な情報を前記設定情報に追加し、前記設定情報を更新する設定更新手順と、
を実行するパイプライン設定更新方法。
【請求項8】
継続的デリバリーにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置に、
デプロイ先毎に前記デプロイ先にデプロイするプログラムのソースコードが管理されるリリースブランチがリポジトリに追加されたことを検知する検知手順と、
前記リリースブランチがリポジトリに追加されたことが検知された場合、前記リリースブランチに対応するデプロイ先にプログラムをデプロイするためのパイプライン処理の実行に必要な情報を前記設定情報に追加し、前記設定情報を更新する設定更新手順と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、パイプライン設定更新装置、パイプライン設定更新方法、及びプログラムに関する。
【背景技術】
【0002】
プログラムの開発手法の1つとして、継続的インテグレーション(CI:Continuous Integration)/継続的デリバリー(CD:Continuous Delivery)と呼ばれる手法が知られている。CI/CDを実現するプログラムはCI/CDツール等と呼ばれ、近年、プログラム開発の現場で広く用いられている。なお、CIに関する従来技術の1つとして、例えば、不具合に係る内容等が管理されるチケットの属性情報に応じて、CIにおける自動実行を効率的に実施する技術が知られている(特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
CI/CDツールではビルドやデプロイ等を自動実行することができるが、ブランチ機能を利用するバージョン管理システム(VCS:Version Control System)でソースコード等が管理されている場合、ブランチの追加等に応じて、その都度、ビルドやデプロイ等を自動実行するためのパイプライン設定を手動で更新する必要がある。
【0005】
本開示は、上記の点に鑑みてなされたもので、ブランチの追加に応じて、パイプライン設定を更新する技術を提供する。
【課題を解決するための手段】
【0006】
本開示の一態様によるパイプライン設定更新装置は、継続的デリバリーにおけるパイプライン処理の設定情報を更新するパイプライン設定更新装置であって、デプロイ先毎に前記デプロイ先にデプロイするプログラムのソースコードが管理されるリリースブランチがリポジトリに追加されたことを検知する検知部と、前記リリースブランチがリポジトリに追加されたことが検知された場合、前記リリースブランチに対応するデプロイ先にプログラムをデプロイするためのパイプライン処理の実行に必要な情報を前記設定情報に追加し、前記設定情報を更新する設定更新部と、を有する。
【発明の効果】
【0007】
ブランチの追加に応じて、パイプライン設定を更新する技術が提供される。
【図面の簡単な説明】
【0008】
【
図1】ブランチ戦略の一例を説明するための図である。
【
図2】ブランチ機能を用いた場合のCDの一例を説明するための図である。
【
図3】ブランチ追加に伴うパイプライン設定ファイルの更新の一例を説明するための図である。
【
図4】本実施形態に係る開発支援システムの全体構成の一例を示す図である。
【
図5】本実施形態に係るパイプライン設定更新プログラムの機能構成の一例を示す図である。
【
図6】本実施形態に係る連携プログラムの機能構成の一例を示す図である。
【
図9】更新テンプレート及び環境情報の登録処理の一例を示すフローチャートである。
【
図10】パイプライン設定ファイルの更新処理の一例を示すフローチャートである。
【
図11】更新前のパイプライン設定ファイルの一例を示す図である。
【
図12】更新後のパイプライン設定ファイルの一例を示す図である。
【
図13】コンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の一実施形態について説明する。
【0010】
<継続的インテグレーション/継続的デリバリー>
まず、継続的インテグレーション(CI)と継続的デリバリー(CD)の概略について説明する。なお、CIとCDをまとめて「CI/CD」等と表記されることがある。
【0011】
CI/CDはいずれもプログラム開発手法の1つであり、ビルド、テスト、デプロイといった処理(ジョブ)の内容をスクリプトとして定義し、ソースコードを管理するバージョン管理システムへの登録(コミット)等をトリガーにスクリプトを自動で実行する手法のことである。1つ以上のジョブの実行で実現される一連の処理は「パイプライン」又は「パイプライン処理」と呼ばれる。一般に、CIはビルドやテストを自動化する手法のことを指し、CDはデプロイを自動化する手法のことを指す。
【0012】
CI/CDを実現するプログラムはCIツール/CDツール等と呼ばれる。これらのツールでは、パイプライン設定ファイルに定義された処理内容(スクリプト)やその処理の実行順等に従ってジョブが実行される。このため、ユーザは、自動化したいジョブの処理内容やその処理の実行順等をパイプライン設定ファイルに定義する必要がある。
【0013】
<ブランチ戦略>
例えばGit等をはじめとする一部のバージョン管理システム(VCS)ではブランチ機能と呼ばれる機能が存在する。ブランチ機能とは、ソースコードの変更履歴(コミット)をブランチ(枝)と呼ばれる単位で管理できる機能のことである。また、各開発プロジェクトでブランチに関して定めた運用のことは「ブランチ戦略」と呼ばれる。
【0014】
ブランチ戦略の一般的な例を
図1に示す。
図1に示す例では、ソースコードの開発がdevelopブランチで行われ、デプロイされるソースコードのオリジナルのバージョンがmasterブランチで管理される。releaseブランチでは、デプロイ先毎にオリジナルのソースコードに対して必要なカスタマイズが行われたソースコード(このソースコードが実際にデプロイされるソースコードである。)が管理される。このときのカスタマイズとしては、例えば、ソースコード上に記載されているパラメータ情報の変更やアプリケーションの機能のオンオフ等が挙げられる。以下、release-Aブランチで管理されるソースコードのデプロイ先を「デプロイ先A」、release-Bブランチで管理されるソースコードのデプロイ先を「デプロイ先B」とする。一般に、「*」をワイルドカード(任意の文字又は文字列)として、release-*ブランチで管理されるソースコードのデプロイ先を「デプロイ先*」とする。
【0015】
<ブランチ機能を用いた場合のCD>
バージョン管理システムでブランチ機能を用いた場合のCDを
図2に示す。
図2では、一例として、デプロイ先Aにソースコードをデプロイする場合について説明する。
図2に示すように、(1)開発者端末によってrelease-Aブランチにソースコードが登録された場合、(2)この登録をトリガーとしてCI/CDツールに対してパイプライン実行が指示される。これにより、CI/CDツールでは、パイプライン設定ファイルに従って、(3)当該ソースコードのビルドがビルドツールに対して指示された後、(4)このビルドによって作成された実行可能ファイルのデプロイがデプロイツールに対して指示され、その結果、この実行可能ファイルがデプロイ先Aにデプロイされる。
【0016】
このように、ブランチ戦略によってデプロイ先の環境毎にreleaseブランチを分けている場合、或るreleaseブランチにソースコードが登録されると、その登録をトリガーとしてCI/CDツールが起動され、当該releaseブランチに対応するデプロイ先にデプロイが行われる。
【0017】
しかしながら、例えば、新しくデプロイ先が増えたこと等によりreleaseブランチを追加する場合、このデプロイ先へのデプロイに必要な情報をパイプライン設定ファイルに対して追加・更新する必要がある。このため、デプロイ先の増加等によりreleaseブランチ(リリースブランチ)が追加される毎に、その都度パイプライン設定ファイルを手動で更新する必要がある。
【0018】
例えば、
図1に示す例において、release-Cブランチが追加された場合を考える。この場合、
図3に示すように、デプロイ先Cへのデプロイに必要な情報の定義をパイプライン設定ファイルに手動で追加・更新する必要がある。例えば、
図3に示す例では、デプロイ先Cへのデプロイを行うためのパイプラインの実行条件と、デプロイ先Cの環境情報(デプロイ先Cの環境を示す仮想マシン(VM:Virtual Machine)のIP(Internet Protocol)アドレス、そのVMへのログインアカウント名及びパスワード等)とを追加する必要がある。なお、
図3に示すパイプライン設定ファイルでは、デプロイに必要な情報の定義のみを記載しており、ビルドに必要な情報の定義は省略している。以下でも同様に、パイプライン設定ファイルにおいて、ビルドに必要な情報の定義は省略するものとする。
【0019】
このように、releaseブランチが追加される毎に、その都度パイプライン設定ファイルを手動で更新する必要があり、ユーザに対して作業負担が生じている。このことは、特に、releaseブランチの追加数が多い場合には顕著である。
【0020】
そこで、以下では、releaseブランチの追加に応じて、パイプライン設定を自動で更新する開発支援システム1について説明する。この開発支援システム1により、releaseブランチが追加された場合であっても、ユーザは手動でパイプライン設定ファイルを更新する必要がないため、ユーザの作業負担を軽減することができる。
【0021】
なお、以下では、各デプロイ先の環境は仮想マシン(VM)であり、デプロイ先毎にそのデプロイ先にデプロイするソースコードを管理するreleaseブランチが用意されるものとする。また、VMのIPアドレス、そのVMにログインするためのログインアカウント名及びログインパスワードのことをまとめて環境情報と呼ぶことにする。
【0022】
ただし、デプロイ先の環境が仮想マシンであることは一例であって、これに限られるものではない。また、上記の環境情報はいずれも一例であって、IPアドレス、ログインアカウント名及びログインパスワード以外にも様々な環境情報があり得る、例えば、デプロイ先と共有している共通鍵の鍵ID等も環境情報の1つとしてあり得る。
【0023】
<開発支援システム1の全体構成例>
本実施形態に係る開発支援システム1の全体構成例を
図4に示す。
図4に示すように、本実施形態に係る開発支援システム1には、パイプライン設定更新システム10と、バージョン管理システム20と、CI/CDシステム30と、CD環境管理者端末40と、開発者端末50とが含まれる。ここで、パイプライン設定更新システム10とバージョン管理システム20との間、パイプライン設定更新システム10とCI/CDシステム30との間、バージョン管理システム20とCI/CDシステム30との間、パイプライン設定更新システム10とCD環境管理者端末40との間、バージョン管理システム20と開発者端末50との間は、例えば、社内ネットワーク等といった通信ネットワークを介して相互に通信可能に接続される。
【0024】
パイプライン設定更新システム10は、パイプライン設定更新プログラム110と、環境情報DB120とを有する汎用サーバ等のコンピュータ又はコンピュータシステムである。
【0025】
パイプライン設定更新プログラム110は、CD環境管理者端末40から環境情報登録要求を受信した場合、この要求に含まれる環境情報を環境情報DB120に格納(登録)する。また、パイプライン設定更新プログラム110は、releaseブランチがバージョン管理システム20に追加されたことを表すブランチ追加通知を受信した場合、環境情報DB120に格納されている環境情報と、バージョン管理システム20から取得した更新テンプレートとを用いて、後述するパイプライン設定ファイル313を更新する。
【0026】
環境情報DB120は、パイプライン設定ファイル313の更新に必要な環境情報を記憶する。なお、環境情報DB120に格納されている1以上の環境情報は、環境情報をレコード、環境情報に含まれる項目(属性)をカラムとするテーブル(環境情報テーブル)を構成している。
【0027】
なお、パイプライン設定更新プログラム110と環境情報DB120に格納されている環境情報の詳細については後述する。
【0028】
バージョン管理システム20は、連携プログラム210と、バージョン管理プログラム220と、テンプレート記憶部230と、リポジトリ240とを有する汎用サーバ等のコンピュータ又はコンピュータシステムである。
【0029】
連携プログラム210は、開発者端末50からテンプレート登録要求を受信した場合、この要求に含まれる更新テンプレートをテンプレート記憶部230に保存(登録)する。また、連携プログラム210は、releaseブランチがリポジトリ240に追加された場合、ブランチ追加通知をパイプライン設定更新システム10に送信する。更に、連携プログラム210は、パイプライン設定更新システム10から更新テンプレート取得要求を受信した場合、テンプレート記憶部230に記憶されている更新テンプレートをパイプライン設定更新システム10に送信する。ここで、更新テンプレートとは、デプロイ先に応じて異なる情報以外の定型的な情報を定義した雛形のことである。
【0030】
バージョン管理プログラム220は、開発者端末50からソースコード登録要求を受信した場合、この要求に含まれるソースコードを該当のブランチに登録する。また、バージョン管理プログラム220は、開発者端末50からブランチ追加要求を受信した場合、この要求に対応するブランチをリポジトリ240に追加する。更に、バージョン管理プログラム220は、ソースコードがreleaseブランチに登録された場合、この登録をトリガーとして、当該ソースコードのビルド及びデプロイするためのパイプライン実行指示をCI/CDシステム30に送信する。
【0031】
テンプレート記憶部230は、更新テンプレートを記憶する。リポジトリ240は、ブランチ毎にソースコード及びその変更履歴を管理する。
【0032】
なお、連携プログラム210とテンプレート記憶部230に記憶されている更新テンプレートの詳細については後述する。
【0033】
CI/CDシステム30は、CI/CDツール310と、ビルドツール320と、デプロイツール330とを有する汎用サーバ等のコンピュータ又はコンピュータシステムである。
【0034】
CI/CDツール310は、バージョン管理システム20からパイプライン実行指示を受信した場合、パイプラインを実行する。ここで、CI/CDツール310には、ビルド指示部311と、デプロイ指示部312と、パイプライン設定ファイル313とが含まれる。CI/CDツール310は、パイプライン実行指示を受信した場合、この指示とパイプライン設定ファイル313に従って、ビルド指示部311によって対象のソースコードに対するビルド指示を行うと共に、デプロイ指示部312によって対象の実行可能ファイルに対するデプロイ指示とを行う。
【0035】
ビルドツール320は、ビルド指示に応じて、ソースコードをビルドして実行可能ファイルを作成する。
【0036】
デプロイツール330は、デプロイ指示に応じて、実行可能ファイルをデプロイ先にデプロイする。
【0037】
なお、CI/CDツール310としては既知の任意のCI/CDツールを用いることが可能であり、例えば、GitLab等を用いることが可能である。また、ビルドツール320としては既知の任意のビルドツールを用いることが可能であり、例えば、Maven、Ant、Gradle等を用いることが可能である。また、デプロイツール330としては既知の任意のデプロイツールを用いることが可能であり、例えば、scpコマンドを利用可能なSSH(Secure Shell)ツール等を用いることが可能である。
【0038】
CD環境管理者端末40は、デプロイ先の環境情報を登録する者(CD環境管理者)が利用する端末(例えば、PC(パーソナルコンピュータ)、スマートフォン、タブレット端末等)である。
【0039】
開発者端末50は、ソースコードを開発する者(開発者)が利用する端末(例えば、PC(パーソナルコンピュータ)、スマートフォン、タブレット端末等)である。
【0040】
なお、
図4に示す開発支援システム1の全体構成は一例であって、開発支援システム1の全体構成はこれに限られるものではない。例えば、パイプライン設定更新システム10、バージョン管理システム20及びCI/CDシステム30のうちの2つ以上のシステムが一体で構成されていてもよい。また、例えば、CD環境管理者端末40と或る開発者端末50とが同一の端末であってもよい。
【0041】
<パイプライン設定更新プログラム110の機能構成例>
図5に示すように、本実施形態に係るパイプライン設定更新プログラム110は、CPU(Central Processing Unit)等のプロセッサに実行させる処理により、環境情報登録部111と、通知受信部112と、更新テンプレート取得部113と、パイプライン設定ファイル更新部114とを実現することができる。
【0042】
環境情報登録部111は、CD環境管理者端末40から送信された環境情報登録要求を受信し、この環境情報登録要求に含まれる環境情報を環境情報DB120に格納(登録)する。
【0043】
通知受信部112は、バージョン管理システム20から送信されたブランチ追加通知を受信する。なお、ブランチ追加通知には、例えば、バージョン管理システム20に追加されたreleaseブランチに対応するデプロイ先の名前(以下、「デプロイ先名」ともいう。)等が含まれる。
【0044】
更新テンプレート取得部113は、通知受信部112によってブランチ追加通知を受信した場合、更新テンプレート取得要求をバージョン管理システム20に送信する。これにより、この更新テンプレート取得要求に対する応答として、更新テンプレートがバージョン管理システム20から返信される。
【0045】
パイプライン設定ファイル更新部114は、通知受信部112が受信したブランチ追加通知に含まれるデプロイ先名に対応する環境情報を環境情報DB120から取得した上で、この環境情報と、更新テンプレート取得部113によって取得された更新テンプレートとを用いて、パイプライン設定ファイル313を更新する。すなわち、パイプライン設定ファイル更新部114は、例えば、デプロイ先名や環境情報等を更新テンプレートに設定した上で、その更新テンプレートに含まれる定義情報をパイプライン設定ファイル313に追加する。これにより、バージョン管理システム20に追加されたreleaseブランチに対応するデプロイ先へのデプロイに必要な情報の定義がパイプライン設定ファイル313に追加される。
【0046】
<連携プログラム210の機能構成例>
図6に示すように、本実施形態に係る連携プログラム210は、CPU等のプロセッサに実行させる処理により、更新テンプレート登録部211と、ブランチ追加検知部212と、通知部213と、更新テンプレート送信部214とを実現することができる。
【0047】
更新テンプレート登録部211は、開発者端末50から送信されたテンプレート登録要求を受信し、このテンプレート登録要求に含まれる更新テンプレートをテンプレート記憶部230に保存(登録)する。
【0048】
ブランチ追加検知部212は、リポジトリ240を監視し、リポジトリ240にreleaseブランチが追加された場合、その追加を検知する。
【0049】
通知部213は、ブランチ追加検知部212によってreleaseブランチの追加が検知された場合、そのreleaseブランチに対応するデプロイ先の名前等が含まれるブランチ追加通知をパイプライン設定更新システム10に送信する。
【0050】
更新テンプレート送信部214は、パイプライン設定更新システム10から送信された更新テンプレート取得要求を受信し、更新テンプレートをテンプレート記憶部230から取得する。また、更新テンプレート送信部214は、当該更新テンプレートをパイプライン設定更新システム10に送信する。
【0051】
<環境情報テーブル>
環境情報DB120に格納されている1以上の環境情報で構成される環境情報テーブルの一例を
図7に示す。
図7に示す環境情報テーブル120Tは3レコードの環境情報で構成されており、各環境情報には、「デプロイ先名」、「IPアドレス」、「ログインアカウント名」、「ログインパスワード」、「その他環境に関する情報」等が含まれる。
【0052】
「デプロイ先名」には、デプロイ先の名前が設定される。「IPアドレス」には、当該デプロイ先の環境(VM)のIPアドレスが設定される。「ログインアカウント名」には、当該デプロイ先の環境(VM)にログインするためのアカウント名が設定される。「ログインパスワード」には、当該デプロイ先の環境(VM)にログインするためのパスワードが設定される。「その他環境に関する情報」には、その他の情報が設定される。その他の情報としては、例えば、当該デプロイ先の環境(VM)にログインするための共通鍵の鍵ID、当該デプロイ先で実行可能ファイルが格納されるフォルダ名やフォルダパス等が挙げられる。
【0053】
なお、
図7に示す環境情報テーブル120Tは一例であって、これに限られるものではない。例えば、各環境情報には、「デプロイ先名」、「IPアドレス」、「ログインアカウント名」、「ログインパスワード」、「その他環境に関する情報」以外の項目(属性)が含まれていてもよい。また、例えば、アカウント名及びパスワードを利用する以外の方法によりデプロイ先の環境にログインする場合、環境情報には、「ログインアカウント名」及び「ログインパスワード」が含まれていなくてもよい。
【0054】
<更新テンプレート>
テンプレート記憶部230に記憶されている更新テンプレートの一例を
図8に示す。
図8に示す更新テンプレート230Dには、ステージ定義231と、デプロイ定義232とが含まれている。ステージ定義231には、Stagesが定義されている。Stagesは、GitLab等においてパイプライン時に実行される処理の任意の名前を記載する場所である。また、デプロイ定義232には、処理内容を表すScriptと、実行条件を表すrulesとが含まれている。ここで、ステージ定義231及びデプロイ定義232において、デプロイ先名が入る箇所にはワイルドカード(*)が定義されている。また、デプロイ定義232のscritには、一例として、scpコマンドでパラメータとして指定される情報が設定される変数が山括弧〈〉で定義されている。なお、デプロイ定義232のrulesには、一例として、release-*ブランチにソースコードが登録された場合をトリガーとしてパイプラインが実行されることを表す条件が定義されている。
【0055】
図8に示す例において、〈*のログインアカウント名〉は、デプロイ先のログインアカウント名が設定される変数である。同様に、〈*のIPアドレス〉はデプロイ先のIPアドレスが設定される変数、〈*のログインパスワード〉はデプロイ先のログインパスワードが設定される変数である。また、〈デプロイ対象ファイルの場所〉はデプロイ対象の実行可能ファイルが格納される場所が設定される変数、〈デプロイ先の場所〉はデプロイ先で当該実行可能ファイルが格納される場所が設定される変数である。
【0056】
図8に示す更新テンプレート230D中のワイルドカードの箇所にデプロイ先名を設定した上で、各変数に対してその変数に対応する情報を設定することで、パイプライン設定ファイル313に対して追加する情報を作成することができる。なお、〈デプロイ対象ファイルの場所〉には、例えば、ビルドツール320が実行可能ファイルを出力するフォルダのフォルダ名やフォルダパス等を設定すればよい。また、〈デプロイ先の場所〉には、例えば、該当の環境情報の「その他環境に関する情報」に設定されている「デプロイ先で実行可能ファイルが格納されるフォルダ名やフォルダパス」等を設定すればよい。ただし、〈デプロイ先の場所〉には、例えば、デフォルトのフォルダ名やフォルダパス等を設定してもよい。
【0057】
なお、
図8に示す更新テンプレート230Dは一例であって、これに限られるものではない。例えば、アカウント名及びパスワードを利用する以外の方法によりデプロイ先の環境にログインする場合、更新テンプレートには、〈*のログインアカウント名〉及び〈*のログインパスワード〉の代わりに、〈*の鍵ID〉等が定義されてもよい。
【0058】
<更新テンプレート及び環境情報の登録処理>
以下、更新テンプレート及び環境情報の登録処理について、
図9を参照しながら説明する。
【0059】
更新テンプレート登録部211は、開発者端末50からテンプレート更新要求を受信すると、このテンプレート登録要求に含まれる更新テンプレートをテンプレート記憶部230に保存(登録)する(ステップS101)。ここで、更新テンプレートは開発者端末50で作成され、この更新テンプレートが含まれるテンプレート登録要求が当該開発者端末50からバージョン管理システム20に送信される。
【0060】
環境情報登録部111は、CD環境管理者端末40から環境情報登録要求を受信すると、この環境情報登録要求に含まれる環境情報を環境情報DB120に格納(登録)する(ステップS102)。ここで、環境情報はCD環境管理者端末40で作成され、この環境情報が含まれる環境情報登録要求が当該CD環境管理者端末40からパイプライン設定更新システム10に送信される。
【0061】
なお、上記のステップS102は、新たな環境情報の登録が必要なる都度繰り返し実行される。
【0062】
<パイプライン設定ファイルの更新処理>
以下、パイプライン設定ファイルの更新処理について、
図10を参照しながら説明する。
【0063】
ブランチ追加検知部212は、releaseブランチの追加を検知したか否かを判定する(ステップS201)。
【0064】
上記のステップS201でreleaseブランチの追加が検知されなかった場合、ブランチ追加検知部212は、例えば、所定の時間待機した後にステップS201に戻る。これにより、releaseブランチの追加が検知されるまで、ステップS201が繰り返し実行される。
【0065】
一方で、上記のステップS201でreleaseブランチの追加が検知された場合、通知部213は、ブランチ追加通知をパイプライン設定更新システム10に送信する(ステップS202)。ここで、ブランチ追加通知には、例えば、リポジトリ240に追加されたreleaseブランチに対応するデプロイ先の名前(デプロイ先名)が含まれる。
【0066】
更新テンプレート取得部113は、通知受信部112によってブランチ追加通知を受信すると、更新テンプレート取得要求をバージョン管理システム20に送信する(ステップS203)。
【0067】
更新テンプレート送信部214は、更新テンプレート取得要求を受信すると、更新テンプレートをテンプレート記憶部230から取得し、当該更新テンプレート取得要求に対する応答として、当該更新テンプレートをパイプライン設定更新システム10に送信する(ステップS204)。
【0068】
パイプライン設定ファイル更新部114は、更新テンプレートを受信すると、以下の手順1~手順4によりパイプライン設定ファイル313を更新する(ステップS205)。
【0069】
手順1:パイプライン設定ファイル更新部114は、通知受信部112が受信したブランチ追加通知に含まれるデプロイ先名に対応する環境情報を環境情報DB120から取得する。例えば、ブランチ追加通知に含まれるデプロイ先名が「C」である場合、パイプライン設定ファイル更新部114は、デプロイ先名「C」が含まれる環境情報を環境情報DB120から取得する。
【0070】
手順2:パイプライン設定ファイル更新部114は、更新テンプレートに定義されているワイルドカード(*)に対して当該デプロイ先名を設定する。例えば、パイプライン設定ファイル更新部114は、更新テンプレートに定義されているワイルドカード(*)に対してデプロイ先名「C」を設定する。
【0071】
手順3:パイプライン設定ファイル更新部114は、更新テンプレートに定義されている各変数に対してそれに対応する情報を設定する。例えば、
図8に示す更新テンプレートを想定する場合、パイプライン設定ファイル更新部114は、〈Cのログインアカウント名〉に対して当該環境情報に含まれるログインアカウント名を設定し、〈CのIPアドレス〉に対して当該環境情報に含まれるIPアドレスを設定し、〈Cのログインパスワード〉に対して当該環境情報に含まれるログインパスワードを設定する。また、パイプライン設定ファイル更新部114は、例えば、〈デプロイ対象ファイルの場所〉に対してはデプロイ対象の実行可能ファイルが格納される場所、〈デプロイ先の場所〉に対してはデプロイ先で当該実行可能ファイルが格納される場所をそれぞれ設定する。
【0072】
手順4:パイプライン設定ファイル更新部114は、更新テンプレートに含まれるステージ定義及びデプロイ定義に定義されている情報をそれぞれパイプライン設定ファイル313に追加して、当該パイプライン設定ファイル313を更新する。これにより、リポジトリ240に追加されたreleaseブランチに対応するデプロイ先にデプロイを行うために必要な情報が当該パイプライン設定ファイル313に追加・更新されたことになる。
【0073】
一例として、リポジトリ240に追加されたreleaseブランチが「release-Cブランチ」である場合における更新前後のパイプライン設定ファイル313を
図11及び
図12にそれぞれ示す。
図11に示す更新前のパイプライン設定ファイル313では、ステージ定義411において、「-build」、「-deployA」、「-deployB」が定義されている。また、デプロイ定義412において、デプロイ先Aにデプロイを行うための処理内容及び実行条件の定義情報421と、デプロイ先Bにデプロイを行うための処理内容及び実行条件の定義情報422とが定義されている。一方で、
図12に示す更新後のパイプライン設定ファイル313では、「-deployC」がステージ定義411に追加されていると共に、デプロイ先Cにデプロイを行うための処理内容及び実行条件の定義情報423がデプロイ定義412に追加されている。
【0074】
なお、パイプライン設定ファイルの更新処理が終了した場合、パイプライン設定更新プログラム110は、所定の時間待機した後、再度、ステップS201の実行を開始する。
【0075】
<ハードウェア構成例>
本実施形態に係る開発支援システム1に含まれるパイプライン設定更新システム10、バージョン管理システム20、CI/CDシステム30は、例えば、
図13に示すコンピュータ500のハードウェア構成により実現可能である。
図13に示すコンピュータ500は、入力装置501と、表示装置502と、外部I/F503と、通信I/F504と、RAM(Random Access Memory)505と、ROM(Read Only Memory)506と、補助記憶装置507と、プロセッサ508とを有する。これらの各ハードウェアは、それぞれがバス509を介して通信可能に接続される。
【0076】
入力装置501は、例えば、キーボード、マウス、タッチパネル、物理ボタン等である。表示装置502は、例えば、ディスプレイ、表示パネル等である。なお、コンピュータ500は、例えば、入力装置501及び表示装置502のうちの少なくとも一方を有していなくてもよい。
【0077】
外部I/F503は、記録媒体503a等の外部装置とのインタフェースである。記録媒体503aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0078】
通信I/F504は、コンピュータ500を通信ネットワークに接続するためのインタフェースである。RAM505は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM506は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。補助記憶装置507は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等の不揮発性の記憶装置である。プロセッサ508は、例えば、CPU等の演算装置である。
【0079】
なお、
図13に示すハードウェア構成は一例であって、コンピュータ500のハードウェア構成はこれに限られるものではない。例えば、コンピュータ500は、複数の補助記憶装置507や複数のプロセッサ508を有していてもよいし、図示したハードウェアの一部を有していなくてもよいし、図示したハードウェア以外の種々のハードウェアを有していてもよい。
【0080】
<変形例>
以下、上記の実施形態の変形例について説明する。
【0081】
・変形例1
上記の実施形態では、releaseブランチの追加に応じてパイプライン設定ファイル313を更新したが、例えば、releaseブランチの削除に応じてパイプライン設定ファイル313を更新してもよい。すなわち、releaseブランチが削除された場合、このreleaseブランチに対応するデプロイ先にデプロイを行うために必要な情報をパイプライン設定ファイル313から削除してもよい。これにより、releaseブランチが削除された場合、パイプライン設定ファイル313を自動的に更新することが可能となる。
【0082】
・変形例2
上記の実施形態では、releaseブランチの追加に応じてパイプライン設定ファイル313を更新したが、例えば、環境情報DB120に格納されている環境情報の変更に応じてパイプライン設定ファイル313を更新してもよい。すなわち、環境情報DB120に格納されている環境情報が変更された場合、パイプライン設定ファイル313に定義されている情報のうち、当該環境情報に含まれるデプロイ先名に対応するデプロイ先にデプロイを行うために必要な情報を変更してもよい。これにより、例えば、デプロイ先のログインパスワード等が変更された場合、環境情報DB120に格納されている環境情報のログインパスワード等も更新することで、パイプライン設定ファイル313を自動的に更新することが可能となる。
【0083】
<まとめ>
以上のように、本実施形態に係る開発支援システム1では、バージョン管理システム20のブランチ機能によってデプロイ先毎にreleaseブランチが存在する場合に、releaseブランチの追加に応じてパイプライン設定を自動的に更新することができる。このため、releaseブランチの追加に応じてパイプライン設定を手動で更新する必要がなく、ユーザの作業負担を削減することができる。特に、例えば、多くの顧客との契約によってreleaseブランチが大量に追加される場合、開発対象のアプリケーションが動作する機器の仕様がその機器のメーカーによって様々であるために多くのreleaseブランチが必要になる場合等において、ユーザの作業負担を大幅に削減することができる。
【0084】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0085】
1 開発支援システム
10 パイプライン設定更新システム
20 バージョン管理システム
30 CI/CDシステム
40 CD環境管理者端末
50 開発者端末
110 パイプライン設定更新プログラム
120 環境情報DB
210 連携プログラム
220 バージョン管理プログラム
230 テンプレート記憶部
240 リポジトリ
310 CI/CDツール
311 ビルド指示部
312 デプロイ指示部
313 パイプライン設定ファイル
320 ビルドツール
330 デプロイツール
500 コンピュータ
501 入力装置
502 表示装置
503 外部I/F
503a 記録媒体
504 通信I/F
505 RAM
506 ROM
507 補助記憶装置
508 プロセッサ
509 バス