問題タブ [continuous-delivery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - マシンの固定セットに展開する必要がある場合の Blue-Green 展開
次の blue=green デプロイメント設計があります。アイデアは私たちのためのものです
- 非アクティブなクラスターに最新のコードをデプロイする
- スモークテスト
- VIP を切り替えて現在の VIP を非アクティブにする
それに応じてパイプラインを go.cd に作成しました。ただし、問題は、新しく非アクティブ状態に移行したクラスターに最新のコードをデプロイしたいということです。これが再びアクティブにならないようにするにはどうすればよいでしょうか? または、他の人はブルーグリーン展開をどのように行っていますか? Google 検索の結果、AWS 向けのソリューションが表示されます。AWS やパブリック クラウドは使用しません。
編集1
インフラストラクチャの制約: ハードウェアは 2 つのクラスターでしか利用できません
ライブ クラスターでバッチ ジョブを実行するのを妨げているものは何ですか? : ライブ クラスタが本番クエリを処理しており、バッチ ロードがマシン リソースを消費し、オンライン システムが応答しなくなる可能性があります
node.js - 継続的デリバリーのためのフィーチャー フラグ ソリューション
2 週間のスプリント サイクルでアプリケーションを構築しています。現在、機能のロールアウトを一度にすべてテストし、問題が発生した場合はホット パッチを適用しています。私たちのスタックは、angular と mongo のノードです。
継続的デリバリーを支援するために、機能のフラグ付けやその他の目的で SAAS ソリューションを使用した人はいますか?
編集:LaunchDarklyの試用- 更新を投稿します
Edit2: 試用版からの更新 - 私のスタックではスムーズに動作するように見えましたが、さらに数週間テストする必要があります。Launchdarkly 機能フラグのセットアップは非常に簡単だったので、ここで概要を説明します。
SDK のインストール
カスタム パラメータを渡す
ユーザー属性を JSON オブジェクトとして渡す
すべて非常に簡単なドキュメントです。
Edit3: 現在 3 週間使用しており、最初の考えがあります。より堅牢な機能のいくつかをさかのぼって統合することは困難ですが、機能フラグ付けは開発を促進するのに役立ちました。最適化の目標を使用して、A/B テスト メトリクスに launchdarkly API を使用できました。
docker - コンテナーでビルドしてテストする方が良いですか?
新しいプロジェクトの CI & CD パイプラインを作成しています。私たちは Docker を使用しているので、私の質問は次のとおりです。Docker コンテナーでビルドしてテストする方がよいので、手順は次のようになります。
- Docker イメージのビルド
- その中でアプリビルドを実行します
- その中でアプリのテストを実行します
- Docker イメージをプッシュする
または Docker コンテナーの外部で、CI が通過した後、イメージをビルドします。
- プロジェクトを CI サーバー (コンテナー外) で直接ビルドする
- CI サーバー (コンテナー外) で直接テストする
- Docker イメージのビルドとプッシュ
sonarqube - SonarQube は階層化されたカバレッジ レポートをサポートしていますか?
Sonar は、ユニット テストと統合テストを個別にレポートする機能をサポートしてい ます。
とはいえ、実際には、さまざまな投資判断を下すために、さまざまな角度からカバレッジを確認したいと考えています。
たとえば、現在、多くのテスト技術が導入されていますが、その多くは「レガシー」と見なされています。私の製品のツリーマップ (おそらく、複雑さや「コード チャーン率」によってサイズが変更されます) を見て、どのテスト テクノロジがどの領域をカバーしているかをオーバーレイで確認できれば素晴らしいと思います。
- セレン
- テレリク
- RSPEC
- ナス
- 等
また、複数のテスト レイヤーを備えた段階的な継続的デリバリー パイプラインも構築しています。例えば:
- ポストコミット (あなたのコミットが開発チームの残りの部分を爆破しないように、非常に迅速に)
- Confidence (主要なテストケースのすべてをカバーするためのより深い一連のテスト。コミット後よりわずかに遅くなりますが、それでもかなり高速です)
- 完全な回帰 (私たちの武器庫のすべてのテスト - 非常に遅いですが、深い)
テクノロジーのテストの場合と同様に、これらのレイヤーをツリーマップに重ねて、各段階が製品をどのようにカバーしているかを示し、トレードオフの決定を行うことができれば素晴らしいでしょう。
既存の SonarQube プラグインとテクニックを使用してこれを行うことができる人はいますか、それとも SonarQube がサポートするものを超えていますか?
ありがとう!
continuous-integration - 継続的デリバリーでバージョン管理を構築する
Continuous Delivery でのバージョン管理について具体的な質問があります。私は、多かれ少なかれこれであるというグローバルワークフローを理解していると思います:
バージョン管理についてはどうですか?ビルド バージョンの管理方法
セマンティック バージョニングを使用する Maven ベースのプロジェクトに取り組んでいるとしますmajor.minor.build
。
開発者が変更を VCS にコミットし、CI サーバーがビルドを実行する場合、CI サーバーはビルド バージョンをインクリメントし、VCS でタグを作成する必要がありますか?
このビルド バージョンはソース コードに存在しますか? その場合、CI サーバーがプロジェクトの変更 (バージョンの増分) をコミットしたため、VCS にプッシュするたびに、開発者はプロジェクトを更新する必要があります。
少し混乱しており、CD のワークフローを実用的な方法で理解したいと思っています。