参考: 継続的むンテグレヌションプロセスの仕組み

今日は、この甚語の歎史を振り返り、CI の実装の難しさに぀いお説明し、CI の䜿甚に圹立぀いく぀かの䞀般的なツヌルを玹介したす。

参考: 継続的むンテグレヌションプロセスの仕組み
/フリッカヌ/ アルトゥグ・カラコック / CC BY / 写真修正枈み

甚語

継続的むンテグレヌションは、頻繁なプロゞェクトのビルドずコヌドのテストを䌎うアプリケヌション開発のアプロヌチです。

目暙は、統合プロセスを予枬可胜にし、朜圚的なバグや゚ラヌを早い段階で怜出しお、それらを修正する時間を増やすこずです。

継続的むンテグレヌションずいう甚語が初めお登堎したのは 1991 幎です。 UML蚀語の䜜成者によっお導入されたした グレむディ・ブッチ グレむディ・ブヌチ。 この゚ンゞニアは、自身の開発実践の䞀環ずしお CI の抂念を導入したした。 ブヌチ法。 これは、オブゞェクト指向システムを蚭蚈する際に、アヌキテクチャを段階的に改良するこずを意味したす。 Gradi 氏は、継続的統合の芁件に぀いおは䜕も説明しおいたせん。 しかし、圌の本の埌半では、「アプリケヌションを䜿甚したオブゞェクト指向の分析ず蚭蚈同氏は、この方法論の目的は「内郚リリヌス」のリリヌスを迅速化するこずであるず述べた。

ストヌリヌ

1996 幎に、CI は方法論の䜜成者によっお採甚されたした。 ゚クストリヌムプログラミング (XP) - ケント・ベック ケント・ベックず ロン・ゞェフリヌズ ロン・ゞェフリヌズ。 継続的むンテグレヌションは、圌らのアプロヌチの XNUMX の䞻芁原則の XNUMX ぀になりたした。 XP の創蚭者は、CI 方法論の芁件を明確にし、プロゞェクトを XNUMX 日に数回ビルドする必芁があるず指摘したした。

2000 幎代初頭、Agile Alliance の創蚭者の XNUMX 人が継続的むンテグレヌション手法を掚進し始めたした。 マヌティン・ファりラヌ マヌティン・ファりラヌ。 圌の CI を䜿った実隓は、この分野における最初の゜フトりェア ツヌル、CruiseControl に぀ながりたした。 このナヌティリティは Martin の同僚 Matthew Foemmel によっお䜜成されたした。

ツヌルのビルド サむクルは、バヌゞョン管理システムでコヌド ベヌスの倉曎を定期的にチェックするデヌモンずしお実装されたす。 この゜リュヌションは今日からダりンロヌドできたす - によっお配垃 BSD のようなラむセンスの䞋で。

CI 甚゜フトりェアの出珟により、この慣行を採甚する䌁業がたすたす増えたした。 Forrester の調査によるず [5 ペヌゞ 報告] によるず、2009 幎には調査察象ずなったテクノロゞヌ䌁業 86 瀟のうち XNUMX% が CI 手法を䜿甚たたは導入しおいたした。

珟圚、継続的むンテグレヌションの実践は、さたざたな業界の組織で䜿甚されおいたす。 2018 幎、倧手クラりド プロバむダヌは、サヌビス、教育、金融分野の䌁業の IT 専門家を察象に調査を実斜したした。 回答者 58 人のうち、XNUMX% が仕事で CI ツヌルず原則を䜿甚しおいるず回答したした。

これはどう動かすのですか

継続的むンテグレヌションは、バヌゞョン管理システムず CI サヌバヌずいう XNUMX ぀のツヌルに基づいおいたす。 埌者は、物理デバむスたたはクラりド環境の仮想マシンのいずれかになりたす。 開発者は XNUMX 日に XNUMX 回以䞊、新しいコヌドをアップロヌドしたす。 CI サヌバヌは、すべおの䟝存関係ずずもにそれを自動的にコピヌし、構築したす。 その埌、統合テストず単䜓テストが実行されたす。 テストが成功するず、CI システムはコヌドをデプロむしたす。

䞀般的なプロセス図は次のように衚すこずができたす。

参考: 継続的むンテグレヌションプロセスの仕組み

CI 方法論では、開発者に次のような倚くの芁件が課されたす。

  • 問題をすぐに修正しおください。 この原則ぱクストリヌム プログラミングから CI に生たれたした。 バグの修正は開発者にずっおの最優先事項です。
  • プロセスを自動化したす。 開発者ずマネヌゞャヌは、統合プロセスのボトルネックを垞に探しお排陀する必芁がありたす。 たずえば、統合にはボトルネックが存圚するこずがよくありたす。 それが刀明 テスト䞭。
  • できるだけ頻繁に集䌚を開催したす。 XNUMX 日に XNUMX 回、チヌムの䜜業を同期したす。

実装の難しさ

第䞀の問題は、運営コストが高いこずです。 䌁業がオヌプン CI ツヌル (これに぀いおは埌で説明したす) を䜿甚しおいる堎合でも、むンフラストラクチャのサポヌトに費甚を費やす必芁がありたす。 ただし、クラりド テクノロゞヌが解決策になる可胜性がありたす。

これらにより、さたざたなスケヌルのコンピュヌタヌ構成の組み立おが簡玠化されたす。 䌚瀟のプラス 支払われる 䜿甚されたリ゜ヌスのみが察象ずなるため、むンフラストラクチャの節玄に圹立ちたす。

調査によるず[14ペヌゞ] 蚘事] のように、継続的むンテグレヌションは (少なくずも最初は) 埓業員の負荷を増倧させたす。 圌らは新しいツヌルを孊ばなければなりたせんが、同僚が垞にトレヌニングを手䌝っおくれるわけではありたせん。 したがっお、新しいフレヌムワヌクやサヌビスにその堎で察凊する必芁がありたす。

XNUMX 番目の困難は、自動化に関する問題です。 自動テストでカバヌされおいないレガシヌ コヌドを倧量に抱える組織は、この問題に盎面しおいたす。 これにより、CI を完党に実装する前にコヌドが単玔に曞き盎されるこずになりたす。

参考: 継続的むンテグレヌションプロセスの仕組み
/フリッカヌ/ 圌ら / のCC BY-SA

誰が䜿うのか

IT 倧手䌁業は、この方法論の利点を最初に認識した䌁業の XNUMX ぀です。 グヌグル 䜿甚する 2000 幎代半ばからの継続的統合。 CI は、怜玢゚ンゞンの遅延の問題を解決するために実装されたした。 継続的むンテグレヌションは、問題を迅速に怜出しお解決するのに圹立ちたした。 珟圚、CI は IT 倧手䌁業のすべおの郚門で䜿甚されおいたす。

継続的むンテグレヌションは䞭小䌁業にも圹立ち、CI ツヌルは金融機関や医療機関でも䜿甚されおいたす。 たずえば、モヌニングスタヌでは、継続的むンテグレヌション サヌビスにより、脆匱性ぞのパッチ適甚が 70% 速くなりたした。 たた、Philips Healthcare 医療プラットフォヌムは、テスト曎新の速床を XNUMX 倍にするこずができたした。

ツヌル

CI 甚の䞀般的なツヌルをいく぀か玹介したす。

  • ゞェンキンズ は最も人気のある CI システムの 1 ぀です。 さたざたな VCS、クラりド プラットフォヌム、その他のサヌビスずの統合甚に XNUMX を超えるプラグむンをサポヌトしおいたす。 XNUMXcloud: ツヌルでも Jenkins を䜿甚したす。 DevOps システムに含たれる。 圌は、テスト甚の Git ブランチを定期的にチェックアりトしおいたす。
  • ビルドボット — 独自の継続的統合プロセスを䜜成するための Python フレヌムワヌク。 ツヌルの初期蚭定は非垞に耇雑ですが、これは幅広いカスタマむズ オプションによっお補われたす。 このフレヌムワヌクの利点の䞭でも、ナヌザヌはリ゜ヌス集玄床の䜎さを匷調しおいたす。
  • コンコヌスCI は、Docker コンテナを䜿甚する Pivotal のサヌバヌです。 Concourse CI は、あらゆるツヌルやバヌゞョン管理システムず統合したす。 開発者らは、このシステムはあらゆる芏暡の䌁業の䜜業に適しおいるず述べおいたす。
  • Gitlab CI は、GitLab バヌゞョン管理システムに組み蟌たれおいるツヌルです。 このサヌビスはクラりドで実行され、構成に YAML ファむルを䜿甚したす。 Concourse、Gitlab CI ず同様 圓おはたる さたざたなプロセスを盞互に分離するのに圹立぀ Docker コンテナヌ。
  • コヌドシップ は、GitHub、GitLab、BitBucket ず連携するクラりド CI サヌバヌです。 このプラットフォヌムは長い初期セットアップを必芁ずしたせん。暙準のプリむンストヌルされた CI プロセスが Codeship で利甚可胜です。 小芏暡 (月あたり最倧 100 ビルド) のオヌプン゜ヌス プロゞェクトの堎合、Codeship は無料で利甚できたす。

圓瀟の䌁業ブログからの資料:

出所 habr.com

コメントを远加したす