開発者ビルドとクラウドへの展開

2685 ワード

フィルJacobsによって
はい!私の最後のマージ要求は受け入れられました、そして、自動化されたビルディングはキックオフしました、そして、私は心配して完全な連続的な統合(CI)パイプラインのために待っています.
何か私が撮影したことがありますか?
Used solid unit tests, part of a test-driven development process
Added new code that calls a web service, and validated the request was accepted
Perhaps, saved a new field to a persistent data source
私のテスト駆動開発プロセスの間、私は私が消費している新しいAPIで実験しました.私はログ、トレース、認証、解析、メトリック、および監視に関連する非機能的要件を満たした.これらのすべては私が開発したコードの小さな部分に複雑さを追加しました.
あなたのdevboxを使用して、お好みのツールセットを使用すると、変更を有効にすることができましたか?単純な変更を検証するのは、コンテナを使用していても、常に簡単ではないことがわかります.
あなたは自動ビルドのためのCIパイプラインと変更を検証するための統合テストの実行に依存すべきです.統合テストを通過するビルドを取得するには、成果を進化させる.あなたの開発努力をもっと詳しく見てみましょう.
You use your IDE to compile, if necessary, and kick off your unit tests.
To sanity test your work, you exercise your changes.
私の場合、マイクロサービスには複数の依存関係があります.私の変更を行使するために、私は私のdevboxに最近のアプリケーションUIを持っていることを確認します.しかし、より速い方法がなければなりません.

図1
開発者のビルドと展開のためのパイプラインでCIを使用すると、私は私の機能ブランチに私の仕事をコミットし、プッシュすることによってビルドと展開を開始します.このパイプラインではgitlab ciを使います.私のチームはクラウドで開発環境を共有しているので、私たちのコンポーネントは最新の状態に保たれています.
我々の典型的なCIパイプラインはステージを構築して、リリースするかもしれません.ビルド、build - arm 64、build - x 86 6 64には2つのジョブがあります.

図2
機能ブランチのビルドと配置を組み込むには、ステージ展開をパイプラインに追加し、ジョブを使用して、サポートされているアーキテクチャ、展開Development Arm 64、およびDeployment Developer X 86 . 64 64を展開しました.

図3
Gitlab CIでは、ジョブはgitlab ciで定義されます.リポジトリ内のYMLファイル.展開段階のための我々の仕事が開発展開のためにだけ使われるように、私は規則を広範囲に利用しました.
規則
\- if :$ CIENT MERGEUNEリクエストを返します."開発"& $ cicy commit "name ==「マスター」
時:マニュアル
ジョブがマージ要求のために実行されないように、GitLab CI変数CHONE MERGENER RESTIRTHE TARGETHER BranchCHER NAMEはNULLと比較されます.私たちの継続的な統合とリリースのための私たちの専用のブランチと比較されます.それが我々の専用のブランチの1つでないならば、配備は起こります.そして、ステップはマニュアルです、開発者が開発環境に配備されるビルドを望むならば、配備は起こります.
結論として、開発展開ステップを追加すると、頻繁に開発者タスクを自動化できます.利点は、あなたのdevboxの上でより簡単なセットアップを含みます、そして、オートメーションはチーム全体のためにあります.devboxの退屈なトラブルシューティングは、削減され、開発環境での作業状態を持つすべての利点です.

コスモ