JP6868728B2 - パーミッションドブロックチェーンアプリケーションの継続的デリバリのための方法及び装置 - Google Patents

パーミッションドブロックチェーンアプリケーションの継続的デリバリのための方法及び装置 Download PDF

Info

Publication number
JP6868728B2
JP6868728B2 JP2020072885A JP2020072885A JP6868728B2 JP 6868728 B2 JP6868728 B2 JP 6868728B2 JP 2020072885 A JP2020072885 A JP 2020072885A JP 2020072885 A JP2020072885 A JP 2020072885A JP 6868728 B2 JP6868728 B2 JP 6868728B2
Authority
JP
Japan
Prior art keywords
source code
network
test
legal entities
blockchain
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
Application number
JP2020072885A
Other languages
English (en)
Other versions
JP2020184330A (ja
Inventor
佑樹 近藤
佑樹 近藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2020184330A publication Critical patent/JP2020184330A/ja
Application granted granted Critical
Publication of JP6868728B2 publication Critical patent/JP6868728B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本開示は、一般にクラウドベースのシステムに関し、より詳細には、ブロックチェーンの使用を通じてクラウドベースのシステムに対して継続的デリバリを容易に行えるようにすることに関する。
従来技術では、クラウドベースのサービス又はハイブリッドなクラウド/エンタープライズシステム上にデプロイされるアプリケーションのための、大規模に拡張可能な継続的デリバリのパイプラインを管理するためのシステム及び方法が存在する。継続的デリバリはある種のパイプラインを構成する一連のジョブであり、ジョブは、ソフトウェア製品をソースコードから取得し、コンパイル及びテストを行って、デプロイ、承認、及びデリバリへと移行するように編成されている。継続的デリバリサーバは、パイプラインの処理を管理する。
複雑なトポロジを有するシステムにおいて継続的デリバリを管理する場合、複数の物理サーバ、ネットワーク、ドメイン及びファイアウォールにわたってワーカーにジョブを割り当てる必要がある場合がある。問題は、集中管理型のサーバが、アクセス制御制限のためにパイプライン内のすべてのジョブを管理できないことである。
このような問題に対処するために、従来技術では、ビルドパイプラインのプラン全体をジョブパッケージ内に書込むような解決策をとっている。さらに、従来技術の実装形態では、異なるサーバ上で動作する複数のビルドワーカーが存在する。各ビルドワーカーは、パイプライン内のジョブに割り当てられる。ビルドワーカーは、ジョブパッケージを受け取り、ジョブを実行し、ジョブの結果を記録する。例えば、第1のジョブは、ビルドワーカーAが実行し、第2のジョブはビルドワーカーBが実行する。ビルドワーカーが実行したジョブの結果は、他のビルドワーカーと共有される。結果を共有するために、ブロックチェーン又はデータベースなどの実装形態を利用する。
しかしながら、従来技術では、パイプライン内で次のジョブに進む前に、ジョブの結果を検証する実装形態はない。本明細書で説明する例示の実装形態は、すべてのビルドワーカーが、パイプライン内の次のジョブへ進む前に必ずジョブの結果を検証することを含む。
本開示の態様は、ブロックチェーンによって、独立して管理される複数の法人にわたって本番システムのリポジトリへのソースコードのデプロイを管理する方法を含んでもよく、この方法は、デプロイのためのソースコードの送信のために、独立して管理される複数の法人のそれぞれにローカルな第1のネットワーク上でソースコードをテストすることを含む。ブロックチェーンにおいて有効であるとして検証されたテストの結果に対して、第2のネットワークでステージングを実行することにより、独立して管理される複数の法人のそれぞれにわたってテストを検証することができる。ブロックチェーンにおいて独立して管理される複数の法人のそれぞれによって署名されるステージングの結果に対して、ソースコードを独立して管理される複数の法人のそれぞれにデプロイするように構成された第3のネットワークにおいてそのソースコードをデプロイする。
本開示の態様は、ブロックチェーンによって、独立して管理される複数の法人にわたって本番システムのリポジトリへのソースコードのデプロイを管理するための命令を有するコンピュータプログラムを含んでもよく、この命令は、デプロイのためのソースコードの送信のために、独立して管理される複数の法人のそれぞれにローカルな第1のネットワーク上でソースコードをテストすることを含む。ブロックチェーンにおいて有効であるとして検証されたテストの結果に対して、第2のネットワークでステージングを実行することにより、独立して管理される複数の法人のそれぞれにわたってテストを検証することができる。ブロックチェーンにおいて独立して管理される複数の法人のそれぞれによって署名されるステージングの結果に対して、ソースコードを、独立して管理される複数の法人のそれぞれにデプロイするように構成された第3のネットワークにおいてそのソースコードをデプロイする。命令は、非一時的なコンピュータ可読媒体上に記憶され、1以上のプロセッサによって実行される。
本開示の態様は、ブロックチェーンによって、独立して管理される複数の法人にわたって本番システムのリポジトリへのソースコードのデプロイを管理するシステムを含んでもよく、そのシステムは、独立して管理される複数の法人のそれぞれにローカルでありソースコードをテストするように構成された第1のネットワークと、ブロックチェーンにおいて有効であるとして検証されたテストの結果に対し、独立して管理される複数の法人のそれぞれにわたってテストを検証するためにステージングを実行するように構成された第2のネットワークと、ブロックチェーンにおいて独立して管理される複数の法人のそれぞれによって署名されるステージングの結果に対して、ソースコードを独立して管理される複数の法人のそれぞれにデプロイするように構成された第3のネットワークとを含む。
本開示の態様は、ブロックチェーンによって、独立して管理される複数の法人にわたって本番システムのリポジトリへのソースコードのデプロイを管理するシステムを含んでもよく、このシステムは、デプロイのためのソースコードの送信のために、独立して管理される複数の法人のそれぞれにローカルな第1のネットワークでソースコードをテストする手段を含む。ブロックチェーンにおいて有効であるとして検証されたテストの結果に対して、第2のネットワークでステージングを実行することにより、独立して管理される複数の法人のそれぞれにわたってテストを検証する手段を含む。ブロックチェーン内において独立して管理される複数の法人のそれぞれによって署名されるステージングの結果に対して、ソースコードを、独立して管理される複数の法人のそれぞれにデプロイするように構成された第3のネットワークにおいてそのソースコードをデプロイする手段を含む。
例示の実装形態による、ブロックチェーンネットワークトポロジのシステムアーキテクチャの一例を示す。 例示の実装形態による、ローカルネットワークのシステム構造の一例を示す。 例示の実装形態による、テストツールの物理的構成の一例を示す。 例示の実装形態による、テストブロックチェーンノードの物理的構成の一例を示す。 例示の実装形態による、ジョブ定義テーブルのデータ構造の一例を示す。 例示の実装形態による、状態テーブルのデータ構造の一例を示す。 例示の実装形態による、ログテーブルのデータ構造の一例を示す。 例示の実装形態による、CDドライバの処理の一例のフロー図を示す。 例示の実装形態による、CDマネージャの処理の一例を示すフロー図である。 例示の実装形態による、ローカルステージの処理の一例を示すシーケンス図である。 例示の実装形態による、ステージング段階の処理の一例を示すシーケンス図である。 例示の実装形態による、デプロイ段階の処理の一例を示すシーケンス図である。
以下の詳細な説明は、本出願の図面及び例示の実装形態のさらなる詳細を提供する。図面間の冗長要素の参照番号及び説明は、明確のため、省略する。本明細書全体を通して使用される用語は、実施例として提供されるものであり、限定することを意図するものではない。例えば、「自動」という用語の使用は、本出願の実装形態を実施する当業者の所望の実装形態に応じて、実装形態のいくつかの態様では、ユーザ又は管理者の制御を含む完全自動又は半自動の実装を含んでいてもよい。選択は、ユーザインターフェース若しくは他の入力手段を介してユーザによって実行されることができ、又は所望のアルゴリズムを通して実装されることができる。本明細書で説明する例示の実装形態は、単独で、又は組み合わせて利用することができ、実装形態の機能性は、所望の実装形態による任意の手段を通して実装することができる。
継続的デリバリ(CD)は、通常、高度の自動化を伴う、短いサイクルでリリースできるようにコード変更を準備できるソフトウェア開発プラクティスである。その目的は、ソフトウェア品質を向上させるために、フィードバックループをできるだけ短くすることである。
CDでは、自動化されたビルド、テスト及びステージングデプロイを1つの連続処理に統合する。すべてのコード変更は、ビルドされ、テストされ、次にステージング環境にプッシュされる。ステージング環境では、本番システムのネットワークの前にUIテスト、結合テスト、性能テスト、負荷テスト及び信頼性テストのような複数のテストが存在する。処理を自動化するために、開発チームではCDツールを使用する。
ブロックチェーンとは、ネットワークに参加するノード間で分散されて共有されるデータベースである。ブロックチェーンは基本的には追記専用データベースである。ブロックチェーンの名前が示すように、ブロックチェーンはブロックで構成されたチェーンを含む。各ブロックは、トランザクションのリストを含む。各ブロックは、暗号ハッシュを用いて前のブロックにリンクされる。ノードは、ブロックチェーンの状態を維持しながら、状態を変更するためのトランザクションを実行する。ブロックチェーンは、分散型台帳技術としても知られている。
ブロックチェーンシステムは、互いに完全には信頼しない異なる組織によって動作される複数のノードを含む。ブロックチェーンネットワーク内のすべてのノードは、ブロックチェーンに格納されたトランザクション及びトランザクションの順序に合意する。合意のメカニズムは、コンセンサスアルゴリズムとして知られている。パブリックネットワークにおけるコンセンサス中にノードに重度の数学的計算を実行させるProof―of―Work(PoW)のような様々なコンセンサスアルゴリズムが存在する。ノードが閉じたプライベートネットワーク内で認証されるとき、Raft、Paxos、及びPBFTなどのフォールトトレラントなコンセンサスプロトコルが使用される。
金融機関やその他の企業は、ブロックチェーンアプリケーションを開発してきた。ブロックチェーンにより、彼らのビジネスプロセスが変わり、新しいサービスが生まれることが期待される。ブロックチェーンの利点は、分散された管理、不変性、及び透明性である。ブロックチェーンネットワークでは、各ノードは同一のトランザクションを実行し、同一の状態を有する。特権のある第3者を介さずにトランザクションを容易にすることが可能である。ブロックチェーン上のデータが不変であるのは、ハッシュのチェーンがトランザクション履歴を変更することを防止するからである。分散データは出資者間の透明性を維持するので、ブロックチェーンは、組織を越える通信や監査のコストを減少させる。
ブロックチェーンプラットフォームソフトウェアには、「パーミッションレスブロックチェーン」と「パーミッションドブロックチェーン」との2種類がある。名前が示すように、パーミッションレスブロックチェーンでは、誰もがブロックチェーンネットワークに参加し、ブロックチェーンノードを動作させることができる。一方、パーミッションドブロックチェーンには、ブロックチェーンネットワークに加わる前にユーザの認証を必要とする。認証されたユーザのみがブロックチェーンノードを動作することができる。企業は、様々なユースケースにおいて適格なアイデンティティを有する組織間で一般的なビジネストランザクションを実行するため、パーミッションドブロックチェーンを使用する。このため、本明細書で説明する例示の実装形態は、パーミッションドブロックチェーンに焦点を当てている。
パーミッションドブロックチェーンを使用する場合、組織は、ブロックチェーンネットワーク内でアプリケーションを実行するためのコンソーシアムを作成する。ブロックチェーンネットワークでは、すべての参加組織は、同じアプリケーションを所有する。これらのアプリケーションは、すべての組織によって実行され、トランザクションを実行し記録する。組織が、コンソーシアム内でアプリケーションを開発して修正すると、全組織は、ブロックチェーンネットワークにそれらをデプロイする前にそのアーチファクトを承認する必要がある。すべての組織は、アプリケーションの権利及び責任を有する。この管理ポリシーは、コンソーシアムにおいて同等の関係を維持する。
テスト結果を使用して、アーチファクト内容を承認する。すべてのテストケースが合格した場合は、そのアーチファクトは組織によって承認される。通常、テストには、ユニットテスト(UT)、結合テスト(IT)及びシステムテスト(ST)が含まれる。参加組織がアーチファクトの内容(例えば、スマートコントラクト、コンフィギュレーション情報)を確実に承認できるように、組織は、ブロックチェーンネットワークの外側でデジタル署名をアーチファクトに与える。その後、署名されたアーチファクトが、本番システムのネットワークにデプロイされる。
しかしながら、パーミッションドブロックチェーンアプリケーション用のエンドツーエンドのCD方法は存在しない。従来のCD法をパーミッションドブロックチェーンアプリケーションに適用する場合には、以下のような問題がある。
すべての組織からの検証なしに次のステップに進んでしまうこと。CDパイプラインの状態は、組織内の1つのサーバによって管理される。パイプラインで次のステップへ進むと、このサーバはジョブ結果を検証し、決定を行う。他の組織は、単一の組織によって管理された状態を信頼する必要がある。この制限は、各組織が等しい力を有するべきであるという、ブロックチェーンネットワークにおける基本的な信頼性に関する前提と矛盾する。
自己のテスト結果を検証することなく承認してしまうこと。UT及びITのようないくつかのテストでは、単一の組織のみがテストを実行する。他の組織は、自身でテストを実行することなく、アーチファクトを承認しなければならない。他の組織は、テスト結果を有していないため、1つの組織が実行するテスト結果に依存することになる。この制限は、ブロックチェーンネットワークにおける基本的な信頼性に関する前提と矛盾する。各組織は、等しい力を有するべきである。例えば、CDサーバは、組織1にUT及びITを実行するように依頼するとする。他の組織2、3及び4はテストを実行しない。組織2、3及び4は、組織1によって実行されたテスト結果に基づいてアーチファクトを承認しなければならない。
組織を越えた未知の状態:各組織が署名されたアーチファクトを本番システムのネットワークにデプロイするかどうかは明らかではない。デプロイ動作は、各組織によって実行される。CDサーバは、各組織が、承認されたアーチファクトを本番システムのネットワークにデプロイするかどうかがわからない。いくつかの組織は、異なるアーチファクトを誤ってデプロイするか、又はそれらをデプロイすることを忘れる可能性がある。
これらの問題を解決するために、本明細書で説明する例示の実装形態は、以下の解決策、すなわち、ブロックチェーンで共有された結果に従って、パイプラインにおける次のステップへと進むことをすべての組織に検証させる、分散継続的デリバリシステムを含む方法を含むものである。状態は、ブロックチェーンアプリケーション(例えば、スマートコントラクト)として実装されるCDマネージャによって管理される。この方法は、すべての組織が自身でテストを実行する分散環境も含む。
これら例示の実装形態により、その寿命全体にわたってパイプラインの状態を制御するCDマネージャを介した、すべての組織による検証が容易になる。例えば、パイプラインは、以下の段階を含んでいてもよい。
ローカル段階:テストのため、アーチファクトを、リポジトリにプッシュする。すべての組織が、ローカルネットワークにおいてユニットテスト及び結合テストを実行する。
ステージング段階:システムテストを、ステージングネットワークにおいて実行する。テストに合格したら、すべての組織が、アーチファクトにデジタル署名する。その後、署名されたアーチファクトは、本番システムのネットワークのためのリポジトリにマージされる。
デプロイ段階:すべての組織は、署名されたアーチファクトを本番システムのネットワークにデプロイする。
次のステップに進む前に、すべての組織はCDマネージャを実行して、すべての組織が状態を変更することに同意するかどうかを検証する。例えば、CDマネージャは、すべての組織が、ユニットテストと結合テストに合格したかどうかを、ステージング段階へ進む前に検証するように構成されている。CDマネージャは、また、すべての組織が、アーチファクトを署名する前に、システムテストを合格させたかどうかを検証するように構成されている。CDマネージャは、本番システムのリポジトリへアーチファクトをプッシュする前に、すべての組織がアーチファクトを署名したかどうかを検証し、すべての組織が署名されたアーチファクトを本番システムのネットワークにデプロイするかどうかを検証するように構成される。
例示の実装形態では、CDマネージャはブロックチェーンアプリケーションとして実装される。パイプラインの状態を制御する機能は、ブロックチェーンアプリケーションとして実装される。ブロックチェーンアプリケーションは、ブロックチェーンネットワーク内のすべての組織によってホストされ、実行される。CDマネージャはブロックチェーンアプリケーションであるため、ブロックチェーンネットワーク内のすべての組織によって実行される。これは、CDサーバが分散されていることを意味する。さらに、CDマネージャは、ジョブ結果を受け取り、それらをブロックチェーンに書き込む。結果は、すべての組織において共有される。すべての組織は、他の組織が実行した結果を得ることができる。CDマネージャは、CD状態の変更を検証すると、その結果をブロックチェーンから読み出す。
例示の実装形態は、さらに、ローカルネットワーク、ステージングネットワーク及び本番システムのネットワークが存在し得る分散環境も含む。各環境は、以下を含み得る異なる目的のために使用される。ローカルネットワークは、各組織でテストケースを実行するように構成されたローカル段階用の環境である。ステージングネットワークは、組織を越えてテストケースを実行するように構成されたステージング段階用の環境である。本番システムのネットワークは、本番システムのサービスとしてブロックチェーンアプリケーションを実行するように構成された本番システムの環境である。すべての組織は、すべての段階に対応できる環境を有する。すべての組織は、これらの環境において自身でテストを実行するので、テストの結果は、各組織が信頼することができる。
第1の例示の実装形態では、パーミッションドブロックチェーンアプリケーションの継続的デリバリのための方法及び装置を説明する。本明細書で説明するように、3つのネットワーク(ローカルネットワーク、ステージングネットワーク、本番システムのネットワーク)を含むシステムは、ブロックチェーンを利用することにより、本番システムのリポジトリ及び独立して管理される複数のエンティティ(すなわち、本明細書で説明する組織)それぞれへのソースコードのデプロイを管理及び検証するために利用される。本明細書で説明するように、法人によるデプロイのためのソースコードの送信のために、ソースコードを、図1、2及び10に示すように、独立して管理される複数の法人のそれぞれにローカルな第1のネットワークでテストする。テストが、図10の処理を通して有効であるとブロックチェーンで検証された場合、図1、図3、図4及び図11に示すように、独立して管理される複数の法人のそれぞれにわたってテストを検証するために、第2のネットワークでステージングが実行される。ブロックチェーン内の、独立して管理される複数の法人のそれぞれによって署名されるステージングの結果に対して、ソースコードは、図1及び図12に示すように、独立して管理される複数の法人のそれぞれにソースコードをデプロイするように構成された第3のネットワークにおいてデプロイされ、それによって、独立して管理される複数の法人からの第3のネットワークにおけるソースコードのデプロイが成功した旨の検証のために、ソースコードは本番システムのリポジトリにデプロイすることができる。
上述の例示の実装形態を通して、ソースコードは、それらのローカルネットワークにおいて各組織によって独立して検証され、次に、検証の結果は、ステージングネットワークにおいて組織間で検証され、その後、ソースコードが本番システムのリポジトリにデプロイされる前に、本番システムのネットワーク内ですべての組織によってデプロイを検証することができる。このようにして、ソースコードのデプロイの有効性を信頼するために、単一の法人に依存する必要はなく、各組織は、それらのローカルネットワーク上でデプロイを独立して検証することができ、ステージングネットワーク上で他の組織のデプロイを検証することができる。
さらに、第1のネットワーク上でのソースコードのテスト、第2のネットワーク上でのステージング、第3のネットワーク上でのソースコードのデプロイは、図10〜図12に示すような順で実行して、単一の法人がソースコードのデプロイにおいて単一の信頼ポイントとならないようにすることができる。
本明細書で説明するように、独立して管理される複数の法人のそれぞれにローカルな第1のネットワーク上のソースコードのテストは、図10のフローに示すように、ソースコードをテストリポジトリにデプロイすること、独立して管理される複数の法人のそれぞれにローカルな第1のネットワーク上でソースコードのテストを実行すること、そして独立して管理される複数の法人から成功であるとして提供される第1のネットワーク上でのソースコードのテストの結果に対し、そのブロックチェーンでのテスト結果を有効であるとして検証することを含んでもよい。図10のフローは、図3に示すように、テストツール104のプロセッサ304によって実行される。
本明細書で説明するように、独立して管理される複数の法人のそれぞれにわたってテストを検証するために第2のネットワーク上でステージングを実行することは、図11のフローに示すように、独立して管理される複数の法人間のスマートコントラクトを介して、第2のネットワーク上のソースコードのテストを実行することと、テストが成功することを示すスマートコントラクトの一部に対し、テストが成功したことを示すスマートコントラクトのうちの一部に関連付けられた独立して管理される複数の法人のうちの一部の間のブロックチェーンに署名を実行することと、その署名実行により得られた署名を本番システムのリポジトリにマージすることと、を含んでもよい。図11のフローは、図4に示すように、テストブロックチェーンノード105のプロセッサ404によって実行することができる。
本明細書で説明するように、独立して管理される複数の法人のそれぞれにソースコードをデプロイするように構成された第3のネットワークにおいてソースコードをデプロイすることは、図12に示すように、ステージングの結果に関連付けられた本番システムのリポジトリから独立して管理される複数の法人のマージされた署名を取得することと、マージされた署名をブロックチェーンにデプロイすることと、ソースコードを独立して管理される複数の法人のそれぞれにデプロイすることと、複数の法人のそれぞれへのソースコードのデプロイの成功を検証するために、本番システムのリポジトリ内でソースコードのデプロイを維持することと、を含んでもよい。図12のフローは、図3及び図4からのプロセッサ304及び404で実行されるCDマネージャ410及びCDドライバ308によって駆動することができる。
図1は、例示の実装形態によるブロックチェーンネットワークトポロジのシステムアーキテクチャの一例を示す。システム100は、3つの環境、すなわちローカルネットワーク101(1)〜101(3)、ステージングネットワーク102、及び本番システムのネットワーク103を含む。
ブロックチェーンネットワークに参加する各組織はそれ自身のローカルネットワークを有するので、複数のローカルネットワーク101(1)〜101(3)が存在する。例えば、組織1はローカルネットワーク101(1)を有し、組織2はローカルネットワーク101(2)を有し、組織3はローカルネットワーク101(3)を有する。この実施例では、3つのローカルネットワークを有する3つの組織(各組織に1つずつ)が存在するが、本開示は、これに限定されず、任意の数の組織及びローカルネットワークを、所望の実装形態に従って使用することができる。ローカルネットワークの構造について、以下でさらに詳細に説明する。
ステージングネットワーク102は、テストツール104(1)〜104(3)と、テストブロックチェーンノード105(1)〜105(3)とを有する。各組織は、少なくとも1つのテストツール104(1)〜104(3)と、1つのテストブロックチェーンノード105(1)〜105(3)とを有する。例えば、組織1は、テストツール104(1)及びテストブロックチェーンノード105(1)を有する。組織2は、テストツール104(2)とテストブロックチェーンノード105(2)を有する。
本番システムのネットワーク103は、動作ツール106(1)〜106(3)及びブロックチェーンノード107(1)〜107(3)を有する。いずれの組織も、少なくとも1つの動作ツール106(1)〜106(3)と、1つのブロックチェーンノード107(1)〜107(3)とを有する。例えば、組織1は、動作ツール106(1)とブロックチェーンノード107(1)とを有する。組織2は、動作ツール106(2)とブロックチェーンノード107(2)とを有する。
システム100には、テストリポジトリ108及び本番システムのリポジトリ109の2つのリポジトリが存在する。テストリポジトリ108は、ローカルネットワーク及びステージングネットワークにおけるテスト用のアプリケーションコード、コンフィギュレーションデータ、テストコード及びテストデータなどのアーチファクトを格納する。本番システムのリポジトリ109は、本番システムのネットワークにおける動作のためのアプリケーションコード及びコンフィギュレーションデータなどのアーチファクトを格納する。すべてのコンポーネントは、ネットワーク110を介して接続される。
図2は、例示の実装形態による、ローカルネットワークのシステム構造の一例を示す。この例では、ローカルネットワーク101(1)が図示されているが、ローカルネットワークのすべてが同様のアーキテクチャを有することもできる。ローカルネットワーク101(1)は、テストツール104(L1)及びテストブロックチェーンノード105(L1−1)、105(L1−2)、105(L1−3)を含む。ローカルネットワークは、各組織によって実行されるビルドおよびテストのために使用される。ローカルネットワークは、各組織に対して独立したブロックチェーンネットワークである。例えば、ローカルネットワーク101(1)は、組織1用のブロックチェーンネットワークである。ローカルネットワーク101(1)は、組織1によって動作されるテストツール104(L1)を有する。ローカルネットワーク101(1)は、組織1によって動作される複数のテストブロックチェーンノード105(L1〜1)、(L1〜2)及び(L1〜3)も有する。
図3は、例示の実装形態による、テストツール104の物理的構成の一例を示す。テストツール104は、図1に示すように、テストツール104(1)〜104(3)についての基礎となる構成を示している。テストツール104は、メモリ301、ローカルストレージ302、通信インターフェース(単数又は複数)303、プロセッサ(単数又は複数)304、及びI/Oデバイス(単数又は複数)305を含む。ローカルストレージ302は、CDドライバ308、署名アプリケーション307及びオペレーティングシステム306を含む。
図4は、例示の実装形態によるテストブロックチェーンノード105の物理的構成の一例を示す。テストブロックチェーンノード105は、メモリ401、ローカルストレージ402、通信インターフェース(単数又は複数)403、プロセッサ(単数又は複数)404及びI/Oデバイス(単数又は複数)405を含む。ローカルストレージ402は、CDマネージャ410、スマートコントラクト(単数又は複数)409、台帳408、ブロックチェーンプログラム(単数又は複数)407及びオペレーティングシステム406を含む。台帳408は、ジョブ定義テーブル500と、状態テーブル600と、ログテーブル700とを含む。
図5は、例示の実装形態によるジョブ定義テーブル500のデータ構造の一例を示す。このテーブルは、台帳408に格納される。ジョブ定義500は、パイプライン内の一連のジョブを定義する。各行は、ジョブの定義を示す。列501は、一意の識別子を各ジョブに割り当てる、パイプライン内のjobIDを示す。列502は、ジョブが成功裏に終了したときのジョブの状態を示す。列503は、nextJobIDを示しており、これは、現在のジョブの後に実行されるジョブのjobIDを示す。列504は、どの組織が次のジョブを実行するかを示すassignPolicyを示す。
図6は、状態テーブル600のデータ構造の一例を示す。このテーブルは、CDマネージャ410によって台帳408内に作成される。状態テーブル600は、パイプラインにおける状態を示す。CDマネージャ410が状態を変更すると、各行は更新される。行601は、changeIDを示し、これは、パイプラインのインスタンスを識別するために使用される。コードがテストリポジトリに提出されると、そのインスタンスに対して新しいchangeIDが生成される。行602は、パイプラインにおける状態を示す。この値は、パイプラインの進捗状況に応じて、ジョブ定義テーブル500の状態502から選択される。行603は、状態が更新されたときの更新時間を示す。
図7は、例示の実装形態による、ログテーブル700のデータ構造の一例を示す。このテーブルは、CDマネージャ410によって台帳408内に作成される。ログテーブル700は、パイプライン全体にわたって実行されるジョブの結果を格納する。各行は、CDマネージャ410がジョブの結果を更新するときに作成される。行701は、パイプラインのインスタンスのchangeIDを示す。行702は、実行されるjobIDを示す。行703は、ジョブを実行した組織を示すorgIDを示す。行704は、ジョブの結果を示す。この値は、ジョブの結果に応じて成功又は失敗に設定される。行705は、ログが更新されたときの更新時間を示す。
図8は、例示の実装形態による、CDドライバ308の処理の一例のフロー図を示す。CDドライバ308は、CDドライバ308が受信するイベントに従って、テストの実行、アーチファクトの署名、アーチファクトのマージ及びアーチファクトのデプロイを要求する。CDドライバ308はまた、トランザクション提案メッセージをCDマネージャ(単数又は複数)410に送信し、応答を受信する。
手順は801から開始する。CDドライバ308の起動時には、登録するイベントの名前を受信する。CDドライバ308は、すべての組織によって実行される。CDドライバ308の各インスタンスは、組織の名前を有する。802において、CDドライバ308は、イベントについて登録する。803において、CDドライバ308は、ネットワーク110上のイベントをリッスンし、イベントを受信するまで待機する。804において、CDドライバ308はイベントを受信する。805において、CDドライバ308は、受信されたイベント内のassigneeフィールドの値をチェックする。CDドライバ308を実行する組織がassigneeに一致するか又はassigneeが空の場合(Yes)、フローは、806に進む。CDドライバ308を実行する組織が、assigneeと一致しない場合(No)、フローは、803に戻って次のイベントを待つ。
806において、CDドライバ308は、受信したイベント内のeventnameフィールドの値をチェックする。eventnameが802から決定された登録イベントの名前と一致する場合(Yes)、フローは807に進み、そうでない場合は(No)、フローは803に戻り、次のイベントを待つ。
807において、CDドライバ308は、受信されたイベント内のeventnameフィールドの値をチェックして、受信したイベントに基づいて処理をルーティングする。eventnameが「updateLocal」である場合には、フローは808に進む。eventnameが「updateStaging」である場合には、フローは810に進む。eventnameが「updateSigning」である場合には、フローは811に進む。eventnameが「updateMerge」である場合には、フローは812に進む。eventnameが「updateDeployment」である場合には、フローは813に進む。eventnameが上述したものと一致しない場合、フローは814に進む。
808において、CDドライバ308は、ローカルネットワークにおけるテスト実行を要求する。異なる組織によって管理される複数のローカルネットワーク101(1)〜101(3)が存在する。CDドライバ308は、組織の名前を有する。CDドライバ308は、その組織に対応するローカルネットワークに要求メッセージを送信する。例えば、組織1によって動作されるCDドライバ308は、組織1のローカルネットワーク101(1)に要求メッセージを送信する。要求を送信した後、テストは、ローカルネットワーク101で実行される。CDドライバ308は、そのローカルネットワークからの結果が受信されるまで待機する。
809において、CDドライバ308は、イベントからの結果を受信する。
810において、CDドライバ308は、ステージングネットワーク102におけるテスト実行を要求する。リクエストを送信した後、ステージングネットワーク102においてテストが実行される。CDドライバ308は、ステージングネットワーク102からの結果が受信されるまで待機する。
811において、CDドライバ308は、アーチファクトに対する署名を要求する。すべての組織は、テストツール104内に署名アプリケーション307を有する。CDドライバ308は、同一の組織によって管理される署名アプリケーション307に要求メッセージを送信する。例えば、組織1によって動作されるCDドライバ308は、テストツール104(1)に対応するように組織1の署名アプリケーション307に要求メッセージを送信する。要求を送信した後、デジタル署名はアーチファクトに入れられる。CDドライバ308は、署名アプリケーション307からの結果が受信されるまで待機する。
812において、CDドライバ308は、アーチファクトのマージを要求する。CDドライバ308は、マージ要求メッセージを用いて、本番システムのリポジトリ109にアーチファクトを送信する。要求を送信した後、アーチファクトは、本番システムのリポジトリ109にマージされる。CDドライバ308は、本番システムのリポジトリ109からの結果が受信されるまで待機する。
813において、CDドライバ308は、アーチファクトのデプロイを要求する。すべての組織は、本番システムのネットワーク103内のブロックチェーンノード107(1)〜107(3)を有する。これらのノードは、デプロイのターゲットである。デプロイは、各組織によって行われる。CDドライバ308は、同一組織で管理されている動作ツール106(1)〜106(3)に要求メッセージを送信する。例えば、組織1によって動作されるCDドライバ308は、組織1の動作ツール106(1)に要求メッセージを送信する。
要求を送信した後、動作ツールは、その管理下でブロックチェーンノード(単数又は、複数)にアーチファクトをデプロイする。CDドライバ308は、動作ツールからの結果を受信するまで待機する。
814において、CDドライバ308は、トランザクション提案メッセージを生成する。トランザクション提案メッセージは、changeID、jobID、組織及び結果を含む。
トランザクション提案メッセージの構造例は、以下の通りである。

“changeID”:“change05”,
“job_id”:“updateLocal”,
“organization”:“org1”
“result”:“success”
815において、CDドライバ308は、提案メッセージをCDマネージャ(単数又は複数)410に送信する。すべての組織は、ステージングネットワーク103内のテストブロックチェーンノード(単数又は複数)105上にCDマネージャ(単数又は複数)410を有する。CDドライバ308は、ステージングネットワーク103内のすべてのCDマネージャ(単数又は複数)に提案メッセージを送信する。CDドライバ308は、CDマネージャ(単数又は複数)410から応答を受信するまで待機する。
816において、CDドライバ308は、CDマネージャ(単数又は複数)410からの応答を受信し、817において処理を終了する。
図9は、例示の実装形態による、CDマネージャ410の処理の一例を示すフロー図である。CDマネージャ410は、要求メッセージを受信し、ジョブの結果を更新し、ジョブの結果を検証し、イベントを発信し、応答メッセージを返信する。この処理は、要求メッセージ内のjobIDに応じて変化する。
フローは、901から開始される。902において、CDマネージャ410は、CDドライバ308から要求メッセージを受信する。CDマネージャ410は、要求メッセージからデータを抽出する。
903において、CDマネージャ410は、要求に対するジョブ定義を取得する。CDマネージャ410は、要求メッセージから抽出されたjobIDを用いてジョブ定義テーブル500を探す。CDマネージャ410は、jobIDの状態、nextJobID及びassigneeを取得する。
904において、CDマネージャ410は、要求された変更を実行するためにジョブ状態が正しいかどうかを検証する。CDマネージャ410は、要求メッセージから抽出されたchangeIdを有する状態テーブル600を探す。CDマネージャ410は、要求メッセージが正しい状態を有するかどうかをチェックする。状態が正しい場合(Yes)、フローは905に進む。
状態が正しくない場合(No)、フローは919に進む。要求は無効であるので、処理は何も更新することなく終了する。
905において、CDマネージャ410は、要求メッセージから抽出されたjobIDの値をチェックする。jobIDがstartLocal、startStaging、startSigning又はstartDeploymentと一致する場合、フローは916に進む。jobIDがupdateLocal、updateSigning又はupdateDeploymentと一致する場合、フローは906に進む。jobIDがupdateStating又はupdateMergeと一致する場合、フローは909に進む。jobIDがverifyLocal又はverifyDeploymentと一致する場合、フローは910に進む。jobIDがverifyStating又はverifyMergeと一致する場合、フローは914に進む。
906において、CDマネージャ410は、組織によって実行されるジョブの結果を更新する。各組織は、ローカルネットワークにおけるテストのための動作を実行し、デジタル署名をアーチファクトに置き、アーチファクトを本番システムのネットワークにデプロイする。その結果、各組織は、ジョブの独自の結果を有する。CDドライバ308がCDマネージャ410に要求メッセージを送信すると、ジョブの結果は、各組織による要求メッセージに含まれる。CDマネージャ410は、要求メッセージからジョブの結果を抽出し、ログテーブル700に新たな記録を入れる。
907において、CDマネージャ410は、ブロックチェーンネットワーク内の組織についてのリストを取得する。組織のリストは、ブロックチェーンプログラム(単数又は複数)407によって維持され、データは、台帳408内に存在する。CDマネージャ410は、台帳408にアクセスすることによって組織のリストを取得する。
908において、CDマネージャ410はログテーブル700を探し、ログテーブル700がすべての組織からの結果を有するかどうかをチェックする。ログテーブル700内にすべての組織からのすべての結果が存在する場合、フローは916に進む。ある組織からの結果が欠落している場合、フローは918に進む。すべての組織がジョブ結果を提出するまで、CDマネージャ410は、状態を更新するのを待機する。
909において、CDマネージャ410は、ジョブの結果を更新する。一例では、ステージングネットワークにおけるテスト及びアーチファクトのマージは、システム全体にわたって一度動作される。システム内には1つの結果が存在する。CDドライバ308がCDマネージャ410に要求メッセージを送信すると、ジョブ結果は要求メッセージに含まれる。CDマネージャ410は、要求メッセージからジョブ結果を抽出し、ログテーブル700に新しい記録を配置し、916に進む。
910において、CDマネージャ410は、changeID及びjobIDを有するログテーブル700を探し、結果のリストを取得する。911において、CDマネージャ410は、910で選択されたすべての結果が、結果の値として成功を有するかどうかを検証する。ローカルネットワーク及びデプロイにおけるテストのために、ログテーブル700は、すべての組織からのジョブ結果のセットを有している。CDパイプラインの状態を変更する前に、CDマネージャ410は、すべての組織がそれらのジョブを成功裏に終えたかどうかをチェックする。すべてのジョブが成功した場合(Yes)、CDマネージャ410は、状態を変更することができ、912に進むことができる。ジョブの失敗が存在する場合(No)、CDマネージャ410は、状態の変更を拒否し、913に進む。912において、CDマネージャ410は、「verified」を値として状態に設定する。913において、CDマネージャ410は、「rejected」を値として状態に設定する。
914において、CDマネージャ410は、changeID及びjobIDを有するログテーブル700を探し、その結果を取得する。915において、CDマネージャ410は、914において選択された結果が、結果の値として成功を有するかどうかを検証する。ステージングネットワークにおけるテストとアーチファクトのマージのために、ログテーブル700はジョブを格納する。CDパイプラインの状態を変更する前に、CDマネージャ410は、ジョブが成功裏に終了したかどうかをチェックする。ジョブが成功した場合(Yes)、CDマネージャ410は、状態を変更することができ、912に進む。ジョブが失敗した場合(No)、CDマネージャ410は、状態の変更を拒否し、913に進む。
916において、CDマネージャ410は、状態テーブル600内の状態を更新する。前のステップで状態が「rejected」に設定されている場合には、状態テーブルも「rejected」として更新される。他の場合には、状態の値はジョブ定義内の状態に等しい。
917において、CDマネージャ410は、次のジョブについてのパラメータを渡すイベントを設定する。イベントは、eventname及びペイロードを含む。ペイロードは、changeID及びassigneeを含む。
トランザクション提案メッセージの構造例は、以下の通りである。

“eventname”:“updateMerge”,
“changeID”:“change05”,
“assignee”:“0rg1”
eventnameの値は、ジョブ定義内のnextJobIDに等しい。
要求メッセージから抽出されたchangeIdの値は、イベント内のchangeIDに渡される。assigneeの値は、ジョブ定義におけるassignPolicyに従って変更される。assignPolicyがALL_ORGである場合、assigneeは空値に設定される。assignPolicyが「ONE_ORG」である場合、assigneeは、ランダムに選択された組織名に設定される。
918において、CDマネージャ410は、応答を返信する。この応答は、状態コード及びメッセージを含む。次に、919において、CDマネージャ410は、処理を終了する。
図10は、例示の実装形態による、ローカルステージの処理の一例を示すシーケンス図である。ローカルステージでは、アーチファクトはテストリポジトリ108にコミットされ、パイプラインは開始され、異なる組織によって所有されるすべてのローカルネットワーク101においてテストが実行され、結果はブロックチェーンに記録され、その結果はCDマネージャ(単数又は複数)410によって検証される。
1001において、アーチファクトは、テストリポジトリ108にプッシュされる。通常、コンソールは、開発者がコードを書き込む機械からアーチファクトを送信するために使用する。1002において、テストリポジトリ108は、1001において開始された要求に対するchangeIDを生成する。changeIDはパイプラインの状態を追跡するために使用する。1003において、テストリポジトリ108は、startLocalのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“startLocal”,“changeID”:“change05”,“assignee”:“org1”}
changeIDは、1002で生成されたものと等しい。assigneeは、アーチファクトをテストリポジトリ108にプッシュした組織となる。イベントは、ネットワーク110全体を通じて同報される。
1004において、CDドライバ308はイベントを待っているので、CDドライバ308はstartLocalのイベントを受信する。イベントを受信した後、CDドライバ308は、受信したイベントがCDドライバ308を実行する組織に割り当てられているかをチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は、次のステップを実行し続ける。割り当てられていない場合、CDドライバ308は次のステップに移行せず、イベントを再び受信するために待機する。
1005において、CDドライバ308は、startLocalに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“startLocal”}
CDドライバ308は、ステージングネットワーク102内の各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1006において、CDマネージャ(単数又は複数)410は、要求を受信し、状態テーブル600内の状態をlocalTestStartedに更新し、updateLocalのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“updateLocal”,“changeID”:“change05”,“assignee”:“”}
1007において、CDドライバ308は、updateLocalのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。assigneeのフィールドは空であるため、すべての組織が割り当てられる。
1008において、CDドライバ308は、対応するローカルネットワーク(単数又は複数)におけるテスト実行を要求する。CDドライバ308は、現在のCDドライバ308の所有者と一致する組織が所有するローカルネットワークに要求メッセージを送信する。1009において、対応するローカルネットワークは、一連のテストを実行し、その結果をCDドライバ308に返信する。テストが成功した場合には、返される値は「成功」である。テストが失敗した場合には、返される値は「失敗」である。
1010において、CDドライバ308は、updateLocalに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“updateLocal”,“organization”:“org1”,“result”:“success”}
1009でのテスト結果は、結果フィールドの値として与えられる。CDドライバ308は、ステージングネットワーク102において各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1011において、CDマネージャ(単数又は複数)410は、要求を受信し、テストの結果をログテーブル700に入れる。これが最後の組織からの要求である場合、CDマネージャ(単数又は複数)は、状態テーブル600内の状態をlocalTestEndedに更新し、verifyLocalのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“verifyLocal”,“changeID”:“change05”,“assignee”:“org2”}
1012において、CDドライバ308は、verifyLocalのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は次のステップに継続する。割り当てられていない場合、CDドライバ308は、次のステップに継続せず、再びイベントを受信するために待機する。
1013において、CDドライバ308は、verifyLocalに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“verifyLocal”}
CDドライバ308は、ステージングネットワーク102において各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1014において、CDマネージャ(単数又は複数)410は、要求を受信し、すべての組織がそれらのジョブを成功裏に完了したかをチェックする。すべてのテストが成功した場合、CDマネージャ(単数又は複数)410は、状態テーブル600内の状態をlocalTestVerifiedに更新し、startStagingのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“startStaging”,“changeID”:“change05”,“assignee”:“org2”}
失敗したテストが存在する場合、CDマネージャ(単数又は複数)410は、状態テーブル600内の状態を拒否されたとして更新し、エラーイベントを発信する。エラーイベントの例は、以下の通りである。
{“eventname”:“error”,“changeID”:“change05”,“message”:“verifyLocal is rejected.”}
図11は、例示の実装形態による、ステージング段階の処理の一例を示すシーケンス図である。ステージング段階において、テストはステージングネットワーク102において実行され、結果はブロックチェーンに記録され、その結果はCDマネージャ(単数又は複数)410によって検証される。その後、アーチファクトのデジタル署名はすべての組織から収集され、署名されたアーチファクトは本番システムのリポジトリ109にプッシュされる。
1101において、CDドライバ308は、startStagingのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は、次のステップに進む。割り当てられていない場合、CDドライバ308は、次のステップに進まず、イベントを再び受信するために待機する。
1102において、CDドライバ308は、startStagingに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“startStaging”}
CDドライバ308は、ステージングネットワーク102において各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1103において、CDマネージャ(単数又は複数)410は、要求を受信し、状態テーブル600内の状態をstagingTestStartedに更新し、updateStagingのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“updateStaging”,“changeID”:“change05”,“assignee”:“org3”}
1104において、CDドライバ308は、updateStagingのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は次のステップに継続する。割り当てられていない場合、CDドライバ308は次のステップに進まず、イベントを再び受信するために待機する。
1105において、CDドライバ308は、ステージングネットワーク102におけるテスト実行を要求する。CDドライバ308は、一連のテストケースを開始し、スマートコントラクト(単数又は複数)409にリクエストを送信する。1106において、スマートコントラクト(単数又は複数)409は一連のテストを実行し、結果をCDドライバ308に返す。テストが成功した場合には、返される値は「成功」である。テストが失敗した場合には、返される値は「失敗」である。
1107において、CDドライバ308は、updateStagingに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“updateStaging”,“organization”:“org3”,“result”:“success”}
1106からのテスト結果を、結果フィールドの値として与えられる。CDドライバ308は、ステージングネットワーク102における各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1108において、CDマネージャ(単数又は複数)410は、要求を受信し、テストの結果をログテーブル700に入れ、状態テーブル600内の状態をstagingTestEndedに更新し、verifyStagingのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“verifyStaging”,“changeID”:“change05”,“assignee”:“org2”}
1109において、CDドライバ308は、verifyStagingのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は、次のステップに継続する。割り当てられていない場合、CDドライバ308は、次のステップに継続せず、イベントを再び受信するために待機する。
1110において、CDドライバ308は、verifyStagingに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの例は以下の通りである。
{“changeID”:“change05”,“job_id”:“verifyStaging”}
CDドライバ308は、ステージングネットワーク102における各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1111において、CDマネージャ(単数又は複数)410は、要求を受信し、ジョブが成功裏に終了したかどうかをチェックする。ジョブが成功した場合、CDマネージャ(単数又は複数)410は状態テーブル600内の状態をstagingTestVerifiedに更新し、startSigningのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“startSigning”,“changeID”:“change05”,“assignee”:“org3”}
ジョブが失敗した場合、CDマネージャ(単数又は複数)410は、状態テーブル600内の状態をrejectedに更新し、エラーイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“error”,“changeID”:“change05”,“message”:“verifyStaging is rejected.”}
1112において、CDドライバ308は、startSigningのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は、次のステップに継続する。割り当てられていない場合、CDドライバ308は、次のステップに継続せず、イベントを再び受信するために待機する。
1113において、CDドライバ308は、startSigningに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“startSigning”}
CDドライバ308は、ステージングネットワーク102における各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1114において、CDマネージャ(単数又は複数)410は、要求を受信し、状態テーブル600内の状態をsignStartedに更新し、updateSigningのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“updateSigning”,“changeID”:“change05”,“assignee”:“”}
1115において、CDドライバ308は、updateSigningのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。assigneeのフィールドは空であるため、すべての組織が割り当てられる。
1116において、CDドライバ308は、アーチファクトの署名を要求する。CDドライバ308は、現在のCDドライバ308の所有者と一致する組織が所有する署名アプリケーション307に要求メッセージを送信する。
1117において、署名アプリケーション307は、デジタル署名をアーチファクトに付けて、署名をCDドライバ308に返信する。
1118において、CDドライバ308は、updateSigningに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“updateLocal”,“organization”:“org1”,“signature”:“43u81lke542pa23pfsd242390”}
1117から返信された署名は、署名フィールドの値として入力される。
CDドライバ308は、ステージングネットワーク102における各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1119において、CDマネージャ(単数又は複数)410は、要求を受信し、署名の結果をログテーブル700に入力する。これが最後の組織からの要求である場合、CDマネージャ(単数又は複数)は、状態テーブル600内の状態をsignEndedに更新し、updateMergeのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“updateMerge”,“changeID”:“change05”,“assignee”:“org1”}
1120において、CDドライバ308は、updateMergeのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は、次のステップに進む。割り当てられていない場合、CDドライバ308は、次のステップに継続せず、イベントを再び受信するために待機する。
1121において、CDドライバ308はアーチファクトのマージを要求する。CDドライバ308は、署名されたアーチファクトを有するプッシュ要求を本番システムのリポジトリ109に送信する。1122において、本番システムのリポジトリ109は、受信されたアーチファクトをマージし、応答メッセージをCDドライバ308に返信する。1123において、CDドライバ308は、updateMergeに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。このようなメッセージの例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“updateMerge”}
CDドライバ308は、ステージングネットワーク102における各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1124において、CDマネージャ(単数又は複数)410は、要求を受信し、状態テーブル600内の状態をartifactMergedに更新し、startDeploymentのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“startDeployment”,“changeID”:“change05”,“org3”}
図12は、例示の実装形態による、デプロイ段階の処理の一例を示すシーケンス図である。デプロイ段階では、アーチファクトは本番システムのネットワーク103にデプロイされ、デプロイの結果はブロックチェーンに記録され、その結果はCDマネージャ(単数又は複数)410によって検証される。
1201において、CDドライバ308は、startDeploymentのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は、次のステップに継続する。割り当てられていない場合、CDドライバ308は次のステップに継続せず、イベントを再び受信するために待機する。
1202において、CDドライバ308は、startDeploymentに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。このようなメッセージの例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“startDeployment”}
CDドライバ308は、ステージングネットワーク102における各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1203において、CDマネージャ(単数又は複数)410は、要求を受信し、状態テーブル600内の状態をdeployStartedに更新し、updateDeploymentのイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“updateDeployment”,“changeID”:“change05”,“assignee”:“”}
1204において、CDドライバ308は、updateDeploymentのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。assigneeのフィールドは空であるため、すべての組織が割り当てられる。
1205において、CDドライバ308は、動作ツール106(1)〜106(3)へのアーチファクトのデプロイを要求する。いずれの組織も、それら自身のブロックチェーンノード(単数又は複数)にアーチファクトをデプロイするために、それらに対応する動作ツールを有する。各組織がアーチファクトをデプロイするために、CDドライバ308は、現在のCDドライバ308の所有者と一致する組織が所有する動作ツールに要求メッセージを送信する。1206において、動作ツールは、マージされたアーチファクトを本番システムのリポジトリ109から取得する。
1207において、動作ツールは、アーチファクトをブロックチェーンノード(単数又は複数)にデプロイし、デプロイ結果を受信する。デプロイが成功した場合には、返信される値は「成功」である。デプロイが失敗した場合、返信される値は、「失敗」である。動作ツールはまた、結果をCDドライバ308に返信する。
1208において、CDドライバ308は、updateDeploymentに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“updateDeployment”,“result”:“success”}
1207からのデプロイの結果が、結果フィールドの値として入力される。CDドライバ308は、ステージングネットワーク102における各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1209において、CDマネージャ(単数又は複数)410は、要求を受信し、デプロイの結果をログテーブル700に入れる。これが最後の組織からの要求である場合、CDマネージャ(単数又は複数)は、状態テーブル600内の状態をdeployEndedに更新し、verifyDeploymentのイベントを発信する。このようなイベントの例は、以下の通りである。
{“eventname”:“verifyDeployment”,“changeID”:“change05”,“assignee”:“org3”}
1210において、CDドライバ308は、verifyDeploymentのイベントを受信する。イベントを受信した後、CDドライバ308は、その担当者をチェックする。イベント内のassigneeフィールドの値が、このCDドライバ308を実行する組織と一致する場合に、イベントが割り当てられる。CDドライバ308は、次のステップに継続する。割り当てられていない場合、CDドライバ308は、次のステップに継続せず、イベントを再び受信するために待機する。
1211において、CDドライバ308は、verifyDeploymentに対するトランザクション提案メッセージを作成し、それをCDマネージャ(単数又は複数)410に送信する。メッセージの一例は、以下の通りである。
{“changeID”:“change05”,“job_id”:“verifyDeployment”}.
CDドライバ308は、ステージングネットワーク102内の各組織が所有するすべてのCDマネージャ(単数又は複数)410に要求を送信する。
1212において、CDマネージャ(単数又は複数)410は、要求を受信し、すべての組織が成功裏にデプロイを終了したかどうかをチェックする。すべてのデプロイが成功した場合、CDマネージャ(単数又は複数)410は状態テーブル600内の状態をdeployVerifiedに更新し、終了するイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“finished”,“changeID”:“change05”,“assignee”:“”}
デプロイの失敗が存在する場合、CDマネージャ(単数又は複数)410は、状態テーブル600内の状態をrejectedに更新し、エラーイベントを発信する。イベントの例は、以下の通りである。
{“eventname”:“error”,“changeID”:“change05”,“message”:“verifyDeployment is rejected.”}
詳細な説明のうちの一部は、コンピュータ内の動作のアルゴリズム及び記号表現に関して提示される。これらのアルゴリズム記述及び記号表現は、データ処理技術の当業者が使用することにより、他の当業者にそれらの技術革新の本質を伝える手段である。アルゴリズムは、所望の終了状態又は結果をもたらす、定義された一連のステップである。例示の実装形態では、実行されるステップは、有形の結果を達成するための有形量の物理的操作を必要とする。
特に記載がない限り、議論から明らかなように、明細書全体を通して「処理」、「演算」、「計算」、「判定」、「表示」などの用語を使用する議論は、物理(電子)量として表されるコンピュータシステムのレジスタ及びメモリ内のデータを演算システムのメモリ、レジスタ、又は他の情報ストレージ、伝送若しくは表示デバイス内の物理量として同様に表される他のデータに、操作及び変換するコンピュータシステム、又は他の情報処理装置のアクション及び処理を含むものであることは理解できよう。
例示の実装形態は、本明細書の動作を実行するための装置に関連する場合もある。この装置は、必要な目的のために特別に構成することができ、あるいは1以上のコンピュータプログラムを選択的に起動又は再構成する1以上の汎用コンピュータを含んでいてもよい。このようなコンピュータプログラムは、コンピュータ可読な格納媒体又はコンピュータ可読な信号媒体などのコンピュータ可読媒体に格納されてもよい。コンピュータ可読格納媒体は、限定されるものではないが、光ディスク、磁気ディスク、読み取り専用メモリ、ランダムアクセスメモリ、ソリッドステートデバイス及びドライブなどの有形媒体、又は任意の別の種類の電子情報を格納するのに適した有形又は非一時的媒体を含んでもよい。コンピュータ可読な信号媒体は、搬送波のような媒体を含んでいてもよい。本明細書で提示されるアルゴリズム及び表示は、いかなる特定のコンピュータ又は他の装置にも本質的に関連するものではない。コンピュータプログラムは、所望の実装形態の操作を実行する命令を含む純粋なソフトウェア実装形態を含んでもよい。
様々な汎用システムを、本明細書の実施例に従ってプログラム及びモジュールと共に使用することができ、又は所望の方法ステップを実行するためのより特化された装置を構築することが便利となる場合もある。さらに、例示の実装形態の説明には、任意の特定のプログラミング言語を参照していない。本明細書に記載された例示の実装形態の教示を実装するために、様々なプログラミング言語を使用することができることは理解できよう。プログラミング言語(単数又は複数)の命令は、1以上の処理装置、例えば中央処理装置(CPU)、プロセッサ、又はコントローラによって実行してもよい。
当該技術分野で知られているように、上述した動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアのいくつかの組み合わせによって実行することができる。例示の実装形態の様々な態様は、回路及び論理デバイス(ハードウェア)を使用して実装してもよく、他の態様は、プロセッサによって実行される場合、プロセッサに本出願の実装を実行する方法を実行させる、機械読み取り可能な媒体(ソフトウェア)上に格納された命令を用いて実装してもよい。さらに、本出願のいくつかの例示の実装形態は、ハードウェアのみで実行してもよく、他の例示の実装形態は、ソフトウェアのみで実行してもよい。さらに、記載された様々な機能は、単一のユニット内で実行することができ、又はいくつかの方法でいくつかの構成要素にわたって拡散することができる。ソフトウェアによって実行される場合、方法は、コンピュータ可読媒体上に格納された命令に基づいて、汎用コンピュータなどのプロセッサによって実行してもよい。所望であれば、命令は、圧縮されたフォーマット及び/又は暗号化されたフォーマットで媒体上に格納することができる。
さらに、本出願のその他の実装形態は、本出願の明細書及び教示内容を考慮することによって、当業者には明らかであろう。記載された例示の実装形態の様々な態様及び/又は構成要素は、単独で、又は任意の組み合わせで使用してもよい。本明細書及び例示の実装形態は、単なる例示として考慮され、本発明の真の範囲及び精神は、以下の特許請求の範囲によって示されることを意図するものである。
101(1)〜(3) ローカルネットワーク
102 ステージングネットワーク
103 本番システムのネットワーク
104(1)〜(3) テストツール
105(1)〜(3) テストブロックチェーンノード
106(1)〜(3) 動作ツール
107(1)〜(3) ブロックチェーンノード
108 テストリポジトリ
109 本番システムのリポジトリ
110 ネットワーク
301 メモリ
302 ローカルストレージ
303 通信インターフェース
304 プロセッサ
305 I/Oデバイス
306 動作システム
307 署名アプリケーション
308 CDドライバ
401 メモリ
402 ローカルストレージ
408 台帳
409 スマートコントラクト
410 CDマネージャ
500 ジョブ定義
600 状態
700 ログ

Claims (13)

  1. ブロックチェーンによって、独立して管理される複数の法人にわたって本番システムのリポジトリへのソースコードのデプロイを管理する方法であって、
    デプロイのための前記ソースコードの送信のために、
    前記独立して管理される複数の法人のそれぞれにローカルな第1のネットワーク上で前記ソースコードをテストすることと、
    前記ブロックチェーンにおいて有効であるとして検証されたテストの結果に対して、
    第2のネットワークでステージングを実行することにより、前記独立して管理される複数の法人のそれぞれにわたってテストを検証することと、
    ブロックチェーンにおいて独立して管理される複数の法人のそれぞれによって署名されるステージングの結果に対して、前記ソースコードを前記独立して管理される複数の法人のそれぞれにデプロイするように構成された第3のネットワークにおいて前記ソースコードをデプロイすることと、を含む方法。
  2. 前記第3のネットワークにおける前記ソースコードのデプロイが成功であるという検証を前記独立して管理される複数の法人から得るために、前記ソースコードを前記本番システムのリポジトリにデプロイすることをさらに含む請求項1に記載の方法。
  3. 前記独立して管理される複数の法人のそれぞれにローカルな前記第1のネットワーク上の前記ソースコードをテストすることは、
    前記ソースコードをテストリポジトリにデプロイすることと、
    前記独立して管理される複数の法人のそれぞれにローカルな前記第1のネットワーク上で前記ソースコードのテストを実行することと、
    前記独立して管理される複数の法人から成功したとして提供される前記第1のネットワーク上で前記ソースコードの前記テストの結果に関し、前記ブロックチェーンの前記テストの前記結果が有効であることを検証することとを含む請求項1に記載の方法。
  4. 前記第2のネットワーク上にステージングすることにより、前記独立して管理される複数の法人のそれぞれにわたって前記テストを検証することは、
    前記独立して管理される複数の法人間のスマートコントラクトを介して、前記第2のネットワーク上で前記ソースコードのテストを実行することと、
    前記テストが成功したことを示す前記スマートコントラクトのうちの一部に関し、前記テストが成功したことを示す前記スマートコントラクトのうちの前記一部に関連付けられた前記独立して管理される複数の法人のうちの一部の間の前記ブロックチェーンへの署名を実行することと、
    署名することから得た署名を前記本番システムのリポジトリへマージすることと、を含む請求項1に記載の方法。
  5. 前記ソースコードを前記独立して管理される複数の法人のそれぞれにデプロイするように構成された前記第3のネットワーク内に前記ソースコードをデプロイすることは、
    前記ステージングの結果に関連付けられた前記本番システムのリポジトリから前記独立して管理される複数の法人のマージされた署名を取得することと、
    前記マージされた署名を前記ブロックチェーンにデプロイすることと、
    前記ソースコードを、前記独立して管理される複数の法人のそれぞれにデプロイすることと、
    前記ソースコードの、複数の法人のそれぞれへの成功したデプロイの検証に関し、前記本番システムのリポジトリ内で前記ソースコードのデプロイを維持することと、を含む請求項1に記載の方法。
  6. 前記第1のネットワーク上で前記ソースコードをテストすることと、前記第2のネットワーク上でステージングを実行することと、前記第3のネットワーク上で前記ソースコードをデプロイすることとが順に実行される請求項1に記載の方法。
  7. ブロックチェーンによって、独立して管理される複数の法人にわたって本番システムのリポジトリへのソースコードのデプロイを管理する命令を記憶する非一時的なコンピュータ可読媒体であって、前記命令は、
    デプロイのための前記ソースコードの送信のために、
    前記独立して管理される複数の法人のそれぞれにローカルな第1のネットワーク上で前記ソースコードをテストすることと、
    前記ブロックチェーンにおいて有効であるとして検証された前記テストの結果に対して、
    第2のネットワークでステージングを実行することにより、前記独立して管理される複数の法人のそれぞれにわたって前記テストを検証することと、
    前記ブロックチェーン内の、前記独立して管理される複数の法人のそれぞれによって署名される前記ステージングの結果に対して、前記ソースコードを、前記独立して管理される複数の法人のそれぞれにデプロイするように構成された第3のネットワークにおいて前記ソースコードをデプロイすることと、を含む非一時的なコンピュータ可読媒体。
  8. 前記第3のネットワークにおける前記ソースコードのデプロイが成功であるという検証を前記独立して管理される複数の法人から得るために、前記ソースコードを前記本番システムのリポジトリにデプロイすることをさらに含む請求項7に記載の非一時的なコンピュータ可読媒体。
  9. 前記独立して管理される複数の法人のそれぞれにローカルな前記第1のネットワーク上の前記ソースコードをテストすることは、
    前記ソースコードをテストリポジトリにデプロイすることと、
    前記独立して管理される複数の法人のそれぞれにローカルな前記第1のネットワーク上で前記ソースコードのテストを実行することと、
    前記独立して管理される複数の法人から成功したとして提供される前記第1のネットワーク上で前記ソースコードの前記テストの結果に関し、前記ブロックチェーンの前記テストの前記結果が有効であることを検証することとを含む請求項7に記載の非一時的なコンピュータ可読媒体。
  10. 前記第2のネットワーク上にステージングすることにより、前記独立して管理される複数の法人のそれぞれにわたってテストを検証することは、
    前記独立して管理される複数の法人間のスマートコントラクトを介して、前記第2のネットワーク上で前記ソースコードのテストを実行することと、
    前記テストが成功したことを示す前記スマートコントラクトのうちの一部に関し
    前記テストが成功したことを示す前記スマートコントラクトのうちの前記一部に関連付けられた前記独立して管理される複数の法人のうちの一部の間の前記ブロックチェーンへの署名を実行することと、
    前記署名することによって得た署名を前記本番システムのリポジトリへマージすることと、を含む請求項7に記載の非一時的なコンピュータ可読媒体。
  11. 前記ソースコードを前記独立して管理される複数の法人のそれぞれにデプロイするように構成された前記第3のネットワーク内に前記ソースコードをデプロイすることは、
    前記ステージングの結果に関連付けられた前記本番システムのリポジトリから前記独立して管理される複数の法人のマージされた署名を取得することと、
    前記マージされた署名を前記ブロックチェーンにデプロイすることと、
    前記ソースコードを、前記独立して管理される複数の法人のそれぞれにデプロイすることと、
    前記ソースコードの、前記複数の法人のそれぞれへの成功したデプロイの検証に関し、前記本番システムのリポジトリ内で前記ソースコードのデプロイを維持することと、を含む請求項7に記載の非一時的なコンピュータ可読媒体。
  12. 前記第1のネットワーク上で前記ソースコードをテストすることと、前記第2のネットワーク上でステージングを実行することと、前記第3のネットワーク上で前記ソースコードをデプロイすることとが順に実行される請求項7に記載の非一時的なコンピュータ可読媒体。
  13. ブロックチェーンによって、独立して管理される複数の法人にわたって本番システムのリポジトリへのソースコードのデプロイを管理するシステムであって、
    前記ソースコードをテストするように構成された、前記独立して管理される複数の法人のそれぞれにローカルな第1のネットワークと、
    前記ブロックチェーンにおいて有効であるとして検証されたテストの結果に対して、ステージングを実行して、前記独立して管理される複数の法人のそれぞれにわたってテストを検証するように構成された第2のネットワークと、
    前記ブロックチェーンにおいて前記独立して管理される複数の法人のそれぞれによって署名されるステージングの結果に対して、前記ソースコードを、前記独立して管理される複数の法人のそれぞれにデプロイするように構成された第3のネットワークと、を含むシステム。
JP2020072885A 2019-04-26 2020-04-15 パーミッションドブロックチェーンアプリケーションの継続的デリバリのための方法及び装置 Active JP6868728B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/396,373 2019-04-26
US16/396,373 US10809992B1 (en) 2019-04-26 2019-04-26 Method and apparatus for continuous delivery of permissioned blockchain application

Publications (2)

Publication Number Publication Date
JP2020184330A JP2020184330A (ja) 2020-11-12
JP6868728B2 true JP6868728B2 (ja) 2021-05-12

Family

ID=70390990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020072885A Active JP6868728B2 (ja) 2019-04-26 2020-04-15 パーミッションドブロックチェーンアプリケーションの継続的デリバリのための方法及び装置

Country Status (3)

Country Link
US (1) US10809992B1 (ja)
EP (1) EP3731454A3 (ja)
JP (1) JP6868728B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347492B2 (en) * 2020-02-26 2022-05-31 Sap Se Software deployment control using blockchain
US11379204B2 (en) * 2020-06-08 2022-07-05 Sap Se Staging service
CN117033198B (zh) * 2023-08-09 2024-05-31 云海链控股股份有限公司 一种软件测试方法、装置、设备以及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312430B2 (en) * 2008-08-27 2012-11-13 International Business Machines Corporation Guarding code check-in with test case execution results
US8677315B1 (en) * 2011-09-26 2014-03-18 Amazon Technologies, Inc. Continuous deployment system for software development
US9612821B2 (en) * 2015-07-02 2017-04-04 International Business Machines Corporation Predicting the success of a continuous software deployment pipeline
US10437585B2 (en) 2015-10-23 2019-10-08 Oracle International Corporation Managing highly scalable continuous delivery pipelines
US9787779B2 (en) * 2015-12-21 2017-10-10 Amazon Technologies, Inc. Analyzing deployment pipelines used to update production computing services using a live pipeline template process
US20180157485A1 (en) * 2016-12-02 2018-06-07 Sap Se Software management integration in a product management system
US10594487B2 (en) * 2017-07-27 2020-03-17 International Business Machines Corporation Password management and verification with a blockchain
US10552556B2 (en) * 2017-08-03 2020-02-04 Liquineq AG System and method for performance testing of scalable distributed network transactional databases
US11831409B2 (en) * 2018-01-12 2023-11-28 Nok Nok Labs, Inc. System and method for binding verifiable claims
US10373158B1 (en) * 2018-02-12 2019-08-06 Winklevoss Ip, Llc System, method and program product for modifying a supply of stable value digital asset tokens
US10938557B2 (en) * 2018-03-02 2021-03-02 International Business Machines Corporation Distributed ledger for generating and verifying random sequence
US10997150B2 (en) * 2018-05-15 2021-05-04 International Business Machines Corporation Configuration drift prevention across multiple systems using blockchain
US10764258B2 (en) * 2018-06-29 2020-09-01 Arm Ip Limited Blockchain infrastructure for securing and/or managing electronic artifacts
US11194911B2 (en) * 2018-07-10 2021-12-07 International Business Machines Corporation Blockchain technique for agile software development framework
US11128472B2 (en) * 2018-09-04 2021-09-21 Red Hat, Inc. Signature verification using blockchain
US20200133658A1 (en) * 2018-10-30 2020-04-30 EMC IP Holding Company LLC Change governance using blockchain

Also Published As

Publication number Publication date
EP3731454A2 (en) 2020-10-28
EP3731454A3 (en) 2020-11-11
JP2020184330A (ja) 2020-11-12
US10809992B1 (en) 2020-10-20
US20200341742A1 (en) 2020-10-29

Similar Documents

Publication Publication Date Title
Androulaki et al. Hyperledger fabric: a distributed operating system for permissioned blockchains
US11169985B2 (en) System and method for supporting SQL-based rich queries in hyperledger fabric blockchains
JP7454616B2 (ja) 分散型元帳におけるdagベースのトランザクション処理方法およびシステム
CN110620810B (zh) 在区块链上的连续资产转移的非链接所有权
AU2020261982B2 (en) Extracting data from a blockchain network
US10523526B2 (en) System and method for managing services and licenses using a blockchain network
US11449478B2 (en) Blockchain implemented data migration audit trail
US10986097B2 (en) System for using a distributed ledger to manage user entitlements to computing resources
JP6868728B2 (ja) パーミッションドブロックチェーンアプリケーションの継続的デリバリのための方法及び装置
US11270030B2 (en) System and method for consensus management
JP2019028525A (ja) 運用管理方法、運用管理システム、および、運用管理プログラム
JP2023532959A (ja) 許可制ブロックチェーンのためのプライバシー保護アーキテクチャ
JP7254585B2 (ja) システム間連携方法およびノード
US20210374112A1 (en) Migration support system, migration support method, and node
US11144645B2 (en) Blockchain technique for immutable source control
US11170108B2 (en) Blockchain technique for immutable source control
US11943360B2 (en) Generative cryptogram for blockchain data management
JP2024501401A (ja) 非集中型のブロードキャスト暗号化および鍵生成ファシリティ
JP7319461B2 (ja) コンソーシアムブロックチェーンを用いてプライベートデータを保持する方法および装置
CN116997895A (zh) 减少执行排序验证区块链模型中的事务中止
CN114579585A (zh) 区块链选择性世界状态数据库
JP7509940B1 (ja) 分散台帳管理システム、管理ノード、および分散台帳管理方法
US20230097203A1 (en) System and method for generating blockchain token support from a set of declarations
US20210126937A1 (en) Cyber-security improvement platform utilizing a secure, distributed transaction ledger
WO2021044197A1 (en) Blockchain for workflow

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210323

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: 20210406

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210412

R150 Certificate of patent or registration of utility model

Ref document number: 6868728

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150