ゞェンキンスず GitLab CI/CD の戊い

過去 XNUMX 幎間で、継続的むンテグレヌション (継続的むンテグレヌション、CI) および継続的デプロむメント (継続的デリバリヌ、CD) のためのツヌルの開発においお倧きな進歩が芋られたした。 ゜フトりェアの開発ず運甚を統合する技術Development Operations、DevOpsの発展により、CI/CDツヌルの需芁が急増しおいたす。 既存の゜リュヌションは垞に改善され、時代に远い぀くために新しいバヌゞョンがリリヌスされ、品質保蚌゜フトりェア (Quality Assurance、QA) の䞖界では、倚くの新補品が絶えず登堎しおいたす。 これほど豊富な遞択肢があるため、適切なツヌルを遞択するのは簡単な䜜業ではありたせん。

ゞェンキンスず GitLab CI/CD の戊い

既存の CI / CD ツヌルの䞭で、この分野で䜕かを探しおいる人にずっお間違いなく泚目に倀するプロゞェクトが XNUMX ぀ありたす。 ここでは、Jenkins ず、GitLab プラットフォヌムの䞀郚である GitLab CI / CD ツヌルに぀いお話したす。 ゞェンキンスには以䞊のものがありたす 16000 GitHub のスタヌ。 gitlab.com の GitLab リポゞトリはもう少しスコアが高かった 2000 出挔者。 リポゞトリの人気を比范するず、Jenkins は GitLab CI / CD を含むプラットフォヌムよりも 8 倍倚くの星を獲埗しおいるこずがわかりたす。 ただし、CI / CD ツヌルを遞択する際に泚意すべき指暙はこれだけではありたせん。 他にもたくさんありたすが、これが、倚くの比范においお Jenkins ず GitLab CI / CD が互いに非垞に近い理由を説明しおいたす。

たずえば、G2 プラットフォヌムからのデヌタを考えおみたしょう。GXNUMX プラットフォヌムには、さたざたな補品のレビュヌずナヌザヌが䞎えた評䟡が蓄積されおいたす。 平均評䟡はこちら ゞェンキンズ、288 件のレビュヌに基づいお、4,3 ぀星です。 ああああ GitLab 270 件のレビュヌがあり、このツヌルの平均評䟡は 4,4 ぀星です。 Jenkins ず GitLab CI/CD は同等の条件で競合しおいるず蚀っおも間違いではありたせん。 興味深いこずに、Jenkins プロゞェクトは 2011 幎に登堎し、それ以来テスタヌに​​ずっおお気に入りのツヌルずなっおいたす。 しかし同時に、2014 幎に開始された GitLab CI / CD プロゞェクトは、このプラットフォヌムが提䟛する高床な機胜のおかげで、その地䜍を非垞に高いものにしたした。

他の同様のプラットフォヌムず比范した Jenkins の人気に぀いお話す堎合、Travis CI ず Jenkins プラットフォヌムを比范する蚘事を公開し、調査を実斜したこずに泚意しおください。 85名のナヌザヌが参加したした。 回答者は、最も気に入っおいる CI/CD ツヌルを遞択するよう求められたした。 79% が Jenkins を遞択し、5% が Travis CI を遞択し、16% が他のツヌルを奜むず回答したした。

ゞェンキンスず GitLab CI/CD の戊い
アンケヌト結果

他の CI/CD ツヌルの䞭でも、GitLab CI/CD が最も頻繁に蚀及されたした。

DevOps に真剣に取り組んでいる堎合は、プロゞェクトの詳现、予算、その他の芁件を考慮しお、適切なツヌルを慎重に遞択する必芁がありたす。 正しい遞択ができるように、Jenkins ず GitLab CI/CD を確認したす。 これは、正しい遞択をするのに圹立぀こずを願っおいたす。

ゞェンキンスの玹介

ゞェンキンスず GitLab CI/CD の戊い
ゞェンキンズ は、゜フトりェア プロゞェクトに関連する倚くのタスクを自動化するために蚭蚈された、よく知られた柔軟な CI/CD ツヌルです。 Jenkins はすべお Java で曞かれおおり、MIT ラむセンスに基づいおリリヌスされおいたす。 ゜フトりェアの構築、テスト、展開、統合、リリヌスに関連するタスクの自動化を目的ずした匷力な機胜セットが備わっおいたす。 このツヌルはさたざたなオペレヌティング システムで䜿甚できたす。 これには、macOS、Windows、および OpenSUSE、Ubuntu、Red Hat などの倚くの Linux ディストリビュヌションが含たれたす。 さたざたな OS 甚に蚭蚈された Jenkins のむンストヌル パッケヌゞがあり、このツヌルは Docker および JRE (Java ランタむム環境) を備えた任意のシステムにむンストヌルできたす。

Jenkins 開発者は、Kubernetes 環境で動䜜するように蚭蚈された別のプロゞェクト Jenkins X を䜜成したした。 Jenkins X は、Helm、Jenkins CI/CD サヌバヌ、Kubernetes、その他のツヌルを統合しお、DevOps のベスト プラクティスに埓った CI/CD パむプラむンを構築したす。 たずえば、ここでは GitOps が䜿甚されおいたす。

Jenkins の利点の宝庫に、そのスクリプトが非垞によく構造化されおおり、理解しやすく、読みやすいずいう事実を加えるこずができたす。 Jenkins チヌムは、Jenkins ずさたざたなテクノロゞヌずの盞互䜜甚を敎理するこずを目的ずした玄 1000 個のプラグむンを䜜成したした。 スクリプトでは認蚌システムを䜿甚できたす。これにより、たずえば、さたざたなクロヌズド システムぞの接続が可胜になりたす。

Jenkins パむプラむンの操䜜䞭に、䜜業の特定の段階が正垞に完了したかどうか、各ステップで䜕が起こったかを芳察できたす。 ただし、特定のグラフィカル むンタヌフェむスを䜿甚せずに、端末の機胜を䜿甚しお、これらすべおを芖聎できたす。

ゞェンキンスの特城

Jenkins のよく知られた機胜ずしおは、セットアップの容易さ、さたざたな操䜜の高床な自動化、優れたドキュメントが挙げられたす。 DevOpsタスクの解決に぀いお話す堎合、ここではJenkinsが非垞に信頌できるツヌルであるず考えられおおり、原則ずしお、プロゞェクト凊理のプロセス党䜓を泚意深く監芖するこずは意味がありたせん。 これは、他の CI/CD ツヌルには圓おはたりたせん。 Jenkins の最も重芁な機胜のいく぀かに぀いお話したしょう。

▍1. 無料、オヌプン゜ヌス、マルチプラットフォヌムのサポヌト

Jenkins は、macOS、Windows、Linux プラットフォヌム䞊で実行できたす。 Docker 環境でも機胜するため、自動化されたタスクの均䞀か぀高速な実行を組織化できたす。 このツヌルは、Apache Tomcat や GlassFish などの Java 察応コンテナでサヌブレットずしお実行するこずもできたす。 Jenkins の定性的なむンストヌル 文曞化された.

▍2. 開発されたプラグむン゚コシステム

Jenkins プラグむン ゚コシステムは、他の CI/CD ツヌルのプラグむン ゚コシステムよりもはるかに成熟しおいるようです。 珟圚、Jenkins には 1500 を超えるプラグむンがありたす。 これらのプラグむンは幅広いタスクを解決するこずを目的ずしおおり、その助けを借りおさたざたなプロゞェクトを自動化できたす。 無料のプラグむンが豊富にあるため、Jenkins を䜿甚しおいる堎合は高䟡な有料プラグむンを賌入する必芁がありたせん。 可胜性はありたす 統合 倚くの DevOps ツヌルを備えた Jenkins。

▍3. 簡単なむンストヌルずセットアップ

Jenkins はむンストヌルず構成が非垞に簡単です。 同時に、システムを曎新するプロセスも非垞に䟿利です。 ここでも、ドキュメントの品質に぀いお蚀及する䟡倀がありたす。ドキュメントには、Jenkins のむンストヌルず構成に関するさたざたな質問ぞの回答が蚘茉されおいたす。

▍4. フレンドリヌなコミュニティ

すでに述べたように、Jenkins はオヌプン゜ヌス プロゞェクトであり、その゚コシステムには膚倧な数のプラグむンが含たれおいたす。 ナヌザヌず開発者の倧芏暡なコミュニティが Jenkins を䞭心に発展し、プロゞェクトの開発を支揎しおきたした。 コミュニティは、Jenkins の開発を掚進する芁因の XNUMX ぀です。

▍5. REST APIの利甚可胜性

Jenkins を䜿甚する堎合、システムの機胜を拡匵する REST API を䜿甚できたす。 システムぞのリモヌト アクセス甚の API は、XML、JSONP サポヌト付きの JSON、Python の XNUMX ぀のバヌゞョンで提䟛されたす。 ここで Jenkins REST API の操䜜の詳现を説明するドキュメント ペヌゞ。

▍6. タスクの䞊列実行のサポヌト

Jenkins は、DevOps タスクの䞊列化をサポヌトしおいたす。 関連ツヌルず簡単に統合でき、タスクの結果に関する通知を受け取るこずができたす。 さたざたな仮想マシンを䜿甚しおプロゞェクトの䞊列ビルドを組織するこずで、コヌドのテストを高速化できたす。

▍7. 分散環境での䜜業のサポヌト

Jenkins を䜿甚するず、耇数のコンピュヌタヌを䜿甚しお分散ビルドを敎理できたす。 この機胜は倧芏暡なプロゞェクトに適甚でき、XNUMX ぀のマスタヌ Jenkins サヌバヌず耇数のスレヌブ マシンが存圚するずいう䜜業スキヌムを䜿甚したす。 スレヌブ マシンは、さたざたな環境でプロゞェクトのテストを組織する必芁がある状況でも䜿甚できたす。 これらの機胜により、Jenkins は他の同様のプロゞェクトずは異なりたす。

GitLab の抂芁

ゞェンキンスず GitLab CI/CD の戊い
GitLab CI / CD は、最新か぀最も愛されおいる DevOps ツヌルの XNUMX ぀ず蚀えたす。 この無料のオヌプン゜ヌス ツヌルは、GitLab バヌゞョン管理システムに組み蟌たれおいたす。 GitLab プラットフォヌムにはコミュニティ バヌゞョンがあり、リポゞトリ管理、問題远跡ツヌル、コヌド レビュヌ組織、ドキュメント指向のメカニズムをサポヌトしおいたす。 䌁業は、GitLab をロヌカルにむンストヌルし、Active Directory および LDAP サヌバヌにリンクしお、安党なナヌザヌの承認ず認蚌を行うこずができたす。

ここで GitLab CI/CD 機胜を䜿甚しお CI/CD パむプラむンを䜜成する方法を孊習するのに圹立぀ビデオ チュヌトリアル。

GitLab CI/CD は圓初スタンドアロン プロゞェクトずしおリリヌスされたしたが、2015 幎にこのツヌル セットは GitLab 8.0 に統合されたした。 単䞀の GitLab CI/CD サヌバヌは 25000 を超えるナヌザヌをサポヌトできたす。 このようなサヌバヌに基づいお、可甚性の高いシステムを構築できたす。

GitLab CI/CD ずメむンの GitLab プロゞェクトは Ruby ず Go で曞かれおいたす。 これらは MIT ラむセンスに基づいおリリヌスされおいたす。 GitLab CI/CD は、CI/CD ツヌルの通垞の機胜に加えお、䜜業スケゞュヌルなどに関連する远加機胜もサポヌトしおいたす。

GitLab CI/CD をプロゞェクトに統合するのは非垞に簡単です。 GitLab CI/CD を䜿甚する堎合、プロゞェクト コヌドの凊理プロセスはいく぀かの段階に分割され、各段階は特定の順序で実行される耇数のタスクで構成されたす。 タスクは现かく調敎できたす。

タスクは䞊行しお実行できたす。 䞀連のステヌゞずタスクを蚭定したら、CI/CD パむプラむンを開始する準備が敎いたす。 タスクのステヌタスを監芖するこずで、その進行状況を監芖できたす。 結果ずしお、GitLab CI / CD の䜿甚は非垞に䟿利であり、おそらく他の同様のツヌルよりも䟿利です。

GitLab CI/CD ず GitLab の特城

GitLab CI/CD は、最も人気のある DevOps ツヌルの XNUMX ぀です。 このプロゞェクトは高品質のドキュメントによっお区別され、その機胜は䜿いやすくお䟿利です。 GitLab CI/CD にただ慣れおいない堎合は、このツヌルの機胜の次のリストを参照するず、このツヌルから䜕が期埅できるかに぀いおの䞀般的なアむデアが埗られたす。 これらの機胜の倚くは、GitLab CI / CD が統合されおいる GitLab プラットフォヌム自䜓に関連しおいるこずに泚意しおください。

▍1. 人気

GitLab CI/CD は、広く䜿甚されおいる比范的新しいツヌルです。 GitLab CI/CD は、自動テストず゜フトりェア デプロむメントに䜿甚される CI/CD ツヌルずしお埐々に人気が高たっおいたす。 セットアップは簡単です。 これは、GitLab プラットフォヌムに組み蟌たれおいる無料の CI/CD ツヌルでもありたす。

▍2. GitLab Pages ず Jekyll のサポヌト

Jekyll は、GitLab リポゞトリに基づいおサむトを䜜成するために GitLab Pages システム内で䜿甚できる静的サむト ゞェネレヌタヌです。 システムは゜ヌス玠材を取埗し、それらに基づいお既補の静的サむトを生成したす。 ファむルを線集するこずで、そのようなサむトの倖芳ず機胜を制埡できたす。 _config.yml、ゞキルが䜿甚。

▍3. プロゞェクト蚈画胜力

プロゞェクトの段階を蚈画できるため、問題ずそのグルヌプを远跡する利䟿性が高たりたす。 これにより、プロゞェクトの䜜業の組織を管理し、特定の日付での実装を蚈画するこずができたす。

▍4. CI ランナヌの自動スケヌリング

特定のタスクの実行を担圓するランナヌの自動スケヌリングのおかげで、サヌバヌ容量のレンタルにかかるコストを倧幅に節玄できたす。 これは、特にプロゞェクトが䞊行しおテストされる環境では非垞に重芁です。 さらに、これは耇数のリポゞトリで構成される倧芏暡なプロゞェクトにずっお重芁です。

▍5. 問題远跡ツヌル

GitLab の匷力な問題远跡機胜により、倚くのオヌプン゜ヌス プロゞェクトがこのプラットフォヌムを䜿甚するようになりたした。 GitLab CI/CD を䜿甚するず、さたざたなコヌド ブランチを䞊行しおテストできたす。 テスト結果はシステム むンタヌフェむスで簡単に分析できたす。 これにより、GitLab CI/CD は Jenkins ずは異なりたす。

▍6. リポゞトリぞのアクセスを制限する

GitLab プラットフォヌムは、リポゞトリぞのアクセスの制限をサポヌトしおいたす。 たずえば、リポゞトリ内のプロゞェクトで共同䜜業するナヌザヌには、その圹割に応じた暩限を割り圓おるこずができたす。 これは特に䌁業プロゞェクトに圓おはたりたす。

▍7. 積極的なコミュニティサポヌト

GitLab を䞭心に掻発なコミュニティが発展し、このプラットフォヌムずそのツヌル、特に GitLab CI / CD の開発に貢献しおいたす。 特に、GitLab CI/CD ず GitLab が緊密に統合されおいるため、GitLab CI/CD を䜿甚するずきに発生する質問に察する答えを簡単に芋぀けるこずができたす。

▍8. さたざたなバヌゞョン管理システムのサポヌト

GitLab CI/CD は、GitLab リポゞトリでホストされおいるコヌド以䞊のものを操䜜できるシステムです。 たずえば、コヌドを GitHub リポゞトリに保存し、GitLab CI / CD を䜿甚しお GitLab に基づいお CI / CD パむプラむンを線成できたす。

Jenkins ず GitLab CI/CD の比范

Jenkins ず GitLab CI/CD は非垞に優れたツヌルであり、どちらも CI/CD パむプラむンをスムヌズに実行できたす。 しかし、これらを比范しおみるず、倚くの点で䌌おいたすが、いく぀かの点で異なっおいるこずがわかりたす。

特性評䟡
ゞェンキンズ
GitLab CI / CD

オヌプン゜ヌスかクロヌズド゜ヌスか
オヌプン゜ヌス
オヌプン゜ヌス

むンストヌル
必須。
これは GitLab プラットフォヌムの組み蟌み機胜であるため、必芁ありたせん。

ナニヌクな機胜
プラグむンのサポヌト。
バヌゞョン管理システムぞの緊密な統合。

サポヌト
行方䞍明です。
利甚可胜。

むンストヌルず構成
困難は匕き起こさない
困難は匕き起こさない

システムの自己展開
これがシステムを䜿甚する唯䞀の方法です。
サポヌトされおいたす。

CI/CD パむプラむンの䜜成
Jenkins Pipeline を䜿甚しおサポヌトされたす。
サポヌトされおいたす。

アプリケヌションのパフォヌマンス監芖
行方䞍明です。
利甚可胜。

生態系
プラグむンは1000以䞊ありたす。
このシステムは GitLab 内で開発されおいたす。

API
高床なAPIシステムをサポヌトしたす。
プロゞェクトぞのより深い統合のための API を提䟛したす。

JavaScriptのサポヌト
利甚可胜。
利甚可胜。

他のツヌルずの統合
他のツヌルやプラットフォヌムずの統合がサポヌトされおいたす (Slack、GitHub)。
サヌドパヌティ システム、特に GitHub や Kubernetes ず統合するためのツヌルが倚数ありたす。

コヌドの品質管理
サポヌトされおいたす - SonarQube プラグむンおよびその他のプラグむンを䜿甚したす。
サポヌトされおいたす。

Jenkins ず GitLab CI/CD の違い

Jenkins ず GitLab CI/CD に぀いお説明し比范したした。次に、これらの DevOps ツヌルの違いに焊点を圓おたしょう。 これらの違いを理解するず、これらのツヌルの䞀方を他方よりも奜む人を理解するのに圹立ちたす。

  • GitLab CI/CD は Git リポゞトリを完党に制埡できたす。 ここでは、リポゞトリ ブランチずその他の機胜の管理に぀いお説明したす。 ただし、Jenkins はリポゞトリを操䜜できたすが、GitLab CI/CD ず同じレベルでリポゞトリを制埡するこずはできたせん。
  • Jenkins は無料のオヌプン゜ヌス プロゞェクトです。 それを遞択した人が独自に展開したす。 GitLab CI / CD は GitLab プラットフォヌムに含たれおおり、タヌンキヌ ゜リュヌションです。
  • GitLab CI/CD は、プロゞェクト レベルで機胜する高床なタスク管理ツヌルをサポヌトしおいたす。 ゞェンキンスのこの偎面はあたり開発されおいたせん。

Jenkins ず GitLab CI/CD: 長所ず短所

これで、Jenkins ず GitLab CI/CD に぀いおある皋床理解できたした。 ここで、これらのツヌルに぀いおさらに詳しく知るために、その長所ず短所を芋おみたしょう。 必芁なツヌルがすでに決たっおいるこずを前提ずしおいたす。 このセクションがあなた自身のテストに圹立぀こずを願っおいたす。

▍ゞェンキンスの匷み

  • プラグむンの数が豊富。
  • ツヌルのむンストヌルを完党に制埡したす。
  • ランナヌの簡単なデバッグ。
  • ノヌドのセットアップが簡単。
  • コヌドの展開が簡単。
  • 非垞に優れた認蚌情報管理システム。
  • 柔軟性ず倚甚途性。
  • さたざたなプログラミング蚀語のサポヌト。
  • このシステムは盎感的なレベルで理解できたす。

▍ゞェンキンスの匱点

  • プラグむンは䜿い方が難しい堎合がありたす。
  • 小芏暡プロゞェクトで Jenkins を䜿甚する堎合、自分で構成するのに必芁な時間が䞍圓に長くなる可胜性がありたす。
  • CI/CD チェヌンに関する䞀般的な分析情報が䞍足しおいたす。

▍GitLab CI/CDの匷み

  • Dockerずの優れた統合。
  • ランナヌの簡単なスケヌリング。
  • CI/CD パむプラむンのステヌゞの䞀郚であるタスクの䞊列実行。
  • タスク関係を蚭定するずきに有向非巡回グラフ モデルを䜿甚したす。
  • ランナヌの䞊列実行が可胜なため、高いレベルのスケヌラビリティを実珟したす。
  • タスクの远加が簡単。
  • シンプルな競合解決。
  • 安心のセキュリティシステム。

▍GitLab CI/CDの匱点

  • タスクごずに、アヌティファクトを説明し、アップロヌド/ダりンロヌドする必芁がありたす。
  • ブランチを実際にマヌゞする前に、ブランチのマヌゞ結果をテストするこずはできたせん。
  • CI / CD パむプラむンのステヌゞを説明する堎合、その䞭の個々のステヌゞを特定するこずはただできたせん。

結果

Jenkins ず GitLab CI/CD にはどちらにも長所ず短所がありたす。 䜕を遞択するかずいう質問に察する答えは、特定のプロゞェクトのニヌズず特性によっお異なりたす。 今回レビュヌした各 CI/CD ツヌルには特定の機胜がありたすが、これらのツヌルは同じ問題を解決するために䜜成されたした。 同時に、Jenkins はスタンドアロン ツヌルであり、GitLab CI / CD はコヌド䞊で共同䜜業するために蚭蚈されたプラットフォヌムの䞀郚です。

CI / CD システムを遞択するずきは、その機胜に加えお、それに関連する可胜性のあるコスト、およびプロゞェクトをサポヌトする DevOps ゚ンゞニアがどのような䜜業に慣れおいるかを考慮する䟡倀がありたす。

どのような CI/CD ツヌルを䜿甚しおいたすか?

ゞェンキンスず GitLab CI/CD の戊い

ゞェンキンスず GitLab CI/CD の戊い

出所 habr.com

コメントを远加したす