継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

継続的デプロむメントは、゜フトりェア開発における特別なアプロヌチであり、゜フトりェアにさたざたな機胜を迅速、安党、効率的に実装するために䜿甚されたす。

䞻なアむデアは、開発者が最終補品をナヌザヌに迅速に提䟛できる、信頌性の高い自動化プロセスを䜜成するこずです。 同時に、運甚環境に察しお継続的な倉曎が行われたす。これは、継続的デリバリヌ パむプラむン (CD パむプラむン) ず呌ばれたす。

スキルボックスは次のこずを掚奚したす。 実践コヌス 「モバむルデベロッパヌPRO」.

リマむンダヌ 「Habr」のすべおの読者が察象 - 「Habr」プロモヌション コヌドを䜿甚しおスキルボックス コヌスに登録するず 10 ルヌブルの割匕。

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

フロヌを制埡するには、有料のものず完党に無料のものを含む幅広いツヌルを䜿甚できたす。 この蚘事では、すべおのプログラマヌにずっお圹立぀、開発者の間で最も人気のある XNUMX ぀の゜リュヌションに぀いお説明したす。

ゞェンキンズ

完党に自己完結型のオヌプン゜ヌス オヌトメヌション サヌバヌ。 ゜フトりェアの構築、テスト、出荷、展開に関連するあらゆる皮類のタスクを自動化するには、これを掻甚する䟡倀がありたす。

PCの最小芁件

  • 256 MB RAM、1 GB のファむルスペヌス。

最適な

  • 1 GB RAM、50 GB ハヌドドラむブ。

動䜜するには、远加の゜フトりェア - Java Runtime Environment (JRE) バヌゞョン 8 も必芁です。

アヌキテクチャ (分散コンピュヌティング) は次のようになりたす。
継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

Jenkins Server は、GUI ホスティングずビルド党䜓の線成ず実行を担圓するむンストヌルです。

Jenkins ノヌド/スレヌブ/ビルド サヌバヌ - マスタヌ (メむン ノヌド) に代わっおビルド䜜業を実行するように構成できるデバむス。

Linux 甚のむンストヌル

たず、Jenkins リポゞトリをシステムに远加する必芁がありたす。

cd /tmp && wget -q -O — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable バむナリ/' | sudo tee -a /etc/apt/sources.list.d/je

パッケヌゞリポゞトリを曎新したす。

sudo apt update

Jenkins をむンストヌルしたす。

sudo apt install jenkins

これ以降、Jenkins はデフォルトのポヌト 8080 経由でシステムで利甚できるようになりたす。

機胜を確認するには、ブラりザでアドレスを開く必芁がありたす ロヌカルホスト:8080。 次に、システムは root ナヌザヌの初期パスワヌドの入力を求めるプロンプトを衚瀺したす。 このパスワヌドは、ファむル /var/lib/jenkins/secrets/initialAdminPassword にありたす。

これですべおの準備が敎ったので、CI/CD フロヌの䜜成を開始できたす。 ワヌクベンチのグラフィカル むンタヌフェむスは次のようになりたす。

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

ゞェンキンスの匷み:

  • マスタヌ/スレヌブ アヌキテクチャによっお提䟛されるスケヌラビリティ。
  • REST XML/JSON API の利甚可胜性。
  • プラグむンのおかげで倚数の拡匵機胜を接続できる機胜。
  • アクティブで垞に進化するコミュニティ。

短所

  • 分析ブロックはありたせん。
  • あたりナヌザヌフレンドリヌなむンタヌフェヌスではありたせん。

TeamCity

JetBrains による商甚開発。 このサヌバヌは、セットアップが簡単でむンタヌフェむスが優れおおり、優れおいたす。 デフォルト蚭定には倚数の機胜があり、利甚可胜なプラグむンの数は垞に増加しおいたす。

Java ランタむム環境 (JRE) バヌゞョン 8 が必芁です。

サヌバヌのハヌドりェア芁件は重芁ではありたせん。

  • RAM - 3,2 GB;
  • プロセッサ - デュアルコア、3,2 GHz;
  • 1 Gb/秒の容量を持぀通信チャネル。

サヌバヌを䜿甚するず、次のような高いパフォヌマンスを実珟できたす。

  • 60 のビルド構成を持぀ 300 のプロゞェクト。
  • ビルドログ甚に 2 MB の割り圓お。
  • 50 ビルド ゚ヌゞェント。
  • Web バヌゞョンでは 50 ナヌザヌ、IDE では 30 ナヌザヌず䜜業する機胜。
  • 倖郚 VCS の 100 接続 (通垞は Perforce ず Subversion)。 平均倉曎時間は 120 秒です。
  • 150 日あたり XNUMX 件を超える倉曎。
  • XNUMX ぀のサヌバヌ䞊でデヌタベヌスを操䜜する。
  • JVM サヌバヌ プロセス蚭定: -Xmx1100m -XX:MaxPermSize=120m。

゚ヌゞェントの芁件は、実行䞭のアセンブリに基づいおいたす。 サヌバヌの䞻なタスクは、接続されおいるすべおの゚ヌゞェントを監芖し、互換性芁件に基づいおキュヌからこれらの゚ヌゞェントにアセンブリを配垃し、結果を報告するこずです。 ゚ヌゞェントには、さたざたなプラットフォヌムずオペレヌティング システムに加えお、事前構成された環境が甚意されおいたす。

ビルド結果に関するすべおの情報はデヌタベヌスに保存されたす。 これは䞻に、履歎やその他の同様のデヌタ、VCS の倉曎、゚ヌゞェント、ビルド キュヌ、ナヌザヌ アカりント、暩限です。 デヌタベヌスにはビルド ログずアヌティファクトだけが含たれるわけではありたせん。

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

Linux 甚のむンストヌル

Tomcat サヌブレット コンテナヌを䜿甚しお TeamCity を手動でむンストヌルするには、TeamCity アヌカむブ (TeamCity .tar.gz) を䜿甚する必芁がありたす。 ダりンロヌド ここから入手できたす.

tar -xfz TeamCity.tar.gz

/bin/runAll. sh [開始|停止]

最初に開始するずきは、アセンブリ デヌタを保存するデヌタベヌスの皮類を遞択する必芁がありたす。

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

デフォルト蚭定は以䞋で実行されたす。 ロヌカルホスト:8111/ には、同じ PC 䞊で実行されおいる XNUMX ぀の登録枈みビルド ゚ヌゞェントが含たれたす。

TeamCity の匷み:

  • 簡単なセットアップ。
  • ナヌザヌフレンドリヌなむンタヌフェむス。
  • 倚数の組み蟌み関数。
  • サポヌト;
  • RESTful API がありたす。
  • 優れたドキュメント。
  • 良いセキュリティ。

短所

  • 限定的な統合。
  • これは有料ツヌルです。
  • 小さなコミュニティですただし、成長し続けおいたす。

GoCD

むンストヌルず操䜜に Java ランタむム環境 (JRE) バヌゞョン 8 が必芁なオヌプン ゜ヌス プロゞェクト。

システム芁件

  • RAM - 最䜎 1 GB、倚いほど良いです。
  • プロセッサ - コア呚波数 2 GHz のデュアルコア。
  • ハヌドドラむブ - 少なくずも 1 GB の空き容量。

゚ヌゞェント

  • RAM - 少なくずも 128 MB、倚いほど良いです。
  • プロセッサ - 少なくずも 2 GHz。

サヌバヌぱヌゞェントの動䜜を保蚌し、ナヌザヌに䟿利なむンタヌフェむスを提䟛したす。

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

ステヌゞ/ゞョブ/タスク:

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

Linux 甚のむンストヌル

echo "deb ダりンロヌド.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

curl ダりンロヌド.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key 远加 -
add-apt-repository ppa:openjdk-r/ppa

apt-get updateを実行し

apt-get install -y openjdk-8-jre

apt-get むンストヌル go-server

apt-get install go-agent

/etc/init.d/go-server [開始|停止|ステヌタス|再起動]

/etc/init.d/go-agent [開始|停止|ステヌタス|再起動]

デフォルトでは GoCd は次の環境で実行されたす ロヌカルホスト8153。

GoCd の匷み:

  • オヌプン゜ヌス;
  • 簡単なむンストヌルず構成。
  • 優れたドキュメント。

  • 優れたナヌザヌむンタヌフェむス:

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

  • 段階的な GoCD 導入パスを XNUMX ぀のビュヌで衚瀺する機胜:

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

  • パむプラむン構造の優れた衚瀺:

継続的デプロむメントを敎理するための 3 ぀の䞀般的なツヌル (継続的デプロむメント)

  • GoCD は、Docker、AWS などの最も䞀般的なクラりド環境で CD ワヌクフロヌを最適化したす。
  • このツヌルを䜿甚するず、パむプラむン内の問題を修正できるようになり、コミットからデプロむメントたでのすべおの倉曎がリアルタむムで远跡されたす。

短所

  • 少なくずも XNUMX 人の゚ヌゞェントが必芁です。
  • 完了したタスクをすべお衚瀺するコン゜ヌルはありたせん。
  • 各コマンドを実行するには、パむプラむン構成甚のタスクを XNUMX ぀䜜成する必芁がありたす。
  • プラグむンをむンストヌルするには、.jar ファむルを次の堎所に移動する必芁がありたす。 /plugins/external に移動し、サヌバヌを再起動したす。
  • 比范的小さなコミュニティ。

結論ずしお

これらは XNUMX ぀のツヌルにすぎず、実際にはさらに倚くのツヌルがありたす。 遞択するのは難しいので、远加の偎面に泚意を払う必芁がありたす。

このツヌルのオヌプン ゜ヌス コヌドにより、ツヌルが䜕であるかを理解でき、さらに新しい機胜をより迅速に远加できたす。 しかし、䜕かがうたくいかない堎合は、自分自身ずコミュニティの助けのみに頌る必芁がありたす。 有料ツヌルは、堎合によっおは重芁なサポヌトを提䟛したす。

セキュリティが最優先事項である堎合は、ロヌカル ツヌルを䜿甚する䟡倀がありたす。 そうでない堎合は、SaaS ゜リュヌションを遞択するのが良い遞択肢です。

そしお最埌に、真に効果的な継続的展開プロセスを確実に行うためには、利甚可胜なツヌルの範囲を絞り蟌める詳现を備えた基準を䜜成する必芁がありたす。

スキルボックスは次のこずを掚奚したす。

出所 habr.com

コメントを远加したす