web-dev-qa-db-ja.com

複数のクライアントへの頻繁なソフトウェアリリースをどのように管理しますか?

クロスプラットフォームのミドルウェア製品があり、通常はクライアントごとにカスタマイズ/バグ修正を行います。場合によっては、週に1回/ 2回の頻度で更新を提供します。

クライアントへのアップデートの効率的な管理とリリースには多くの問題があります。

掘り下げてみましたが、この問題を具体的に解決する方法が見つかりません。

誰でも彼らの経験を共有できますか?このシナリオにどのように対処しますか、または優れたソフトウェア配信cmsを知っていますか?

7
meeech

これが私たちがすることです:

  • fixed iterationがあり、計画されたすべての機能を構築します。
  • 機能が完了するたびに自動ビルドをトリガーするスクリプトを作成し、それをすぐに利用可能 "ベータ版"と呼ばれる特別な領域で行います。 Webページの更新とアップロードを含め、完全に自動化されています。これはベータ版と呼ばれ、ユーザーがよく理解している用語です。しかし、それは純粋に開発ビルドです。それらによって消費される準備ができています。それがベータページであるという事実、ユーザーは欠陥を受け入れ、それらがそのビルドの暗黙のテスターに​​なるという事実。
  • イテレーションの最後に、decideで公式リリース(ニュースレター、ウェブサイトの変更など)を行うか、次のイテレーションに延期します。
  • プロセス中に、お客様からfeedback継続的にを受け取ります。時々、私たちは機能(即時に対処します。私たちはそれらの開発ビルドを通じて非常に迅速に利用できるようにしました。
  • 厄介なバグに直面した場合は、トランクでfix itを実行し、以前のバージョンをリリースしたときに行ったブランチにマージします。そして、公式ダウンロードエリアのファイルをサイレントに更新し、問題の影響を受けたユーザーに通知します。

これにより、次の利点が得られます。

  • 私たちcontrol私たちのリリースプロセス。私たちの顧客はそれを感じ、それから私たちをより信頼します。
  • 貴重なフィードバックを提供するを重視するお客様もいます。多くのイノベーションはそのチャネルから生まれています。
  • 私たちの顧客は、私たちが支払ったものの上に継続的に構築していることを知っているため、(本当の)お金の価値があると感じています彼らはそれに投資しました。

これはプロセスの概要ですが、要点はきっと理解できます。

5
user2567

Continuous Delivery と呼ばれる素晴らしい本があります。また、密接に関連するソフトウェアブランチのグループを維持するためのアプローチに対処する Software Product Lines と呼ばれるプロセスを確認することもできます。私はConvergysにいたときにこの手法を使用しました(これは、プロバイダーごとにカスタマイズされた単一の製品を使用して、アメリカのワイヤレスおよびインターネットサービスプロバイダーの大部分の請求を処理します)。

3
Michael Brown

ほとんどの場合、ブランチを使用します。まれに、まったく新しいクライアント固有のリポジ​​トリのコピーを複製します。重要なのは、すべてを「関連性」のある状態に保ち、マージやチェリーピッキングでさえも、証明する必要がないようにすることです。

私は、他のオープンソースプロジェクトをフォークするときと同じルールに従います。関係するほとんどの人が過度にローカライズされ、自分のニーズに固有であると考える方向にプロジェクトを進める必要がある場合、私はそれをフォークします。クライアントのニーズが主な取り組みから十分に逸脱している場合は、別のリポジトリをフォークします。

それ以外の場合は、さまざまなアーキテクチャのブランチを維持することは珍しくありません。そのため、メインの開発の焦点から大きく外れる必要がない特定のクライアントのブランチは、基本的に同じことを果たします。

繰り返しになりますが、クライアントごとに1つの新しいリポジトリを複製しても問題はありません。重要なのは、バージョン管理システムがマージ、二分、タグ、その他私たちがそれらに頼っていると思っている他のすべての素敵なことを管理するのに役立つように、それらすべてを関連付けておくことです。

2
Tim Post