2016-08-25 3 views
2

ストリーム、および当社ストリームツリーは次のようになります。ClearCaseのUCMは:開発者にベースラインを提供することが、私は現在、ちょうどClearCaseのUCMへの移行を終えた大規模なプロジェクトで働いています

  • Main_Int_Stream
    • Main_Dev_Stream
      • User_Dev_Stream
      • User_Dev_Stream
      • 会社er_Dev_Stream
    • Main_Dev_Stream
      • User_Dev_Stream
      • User_Dev_Stream
      • このパターンは、各プロジェクトはただ一つのメイン持つ複数のプロジェクトaccross繰り返される

User_Dev_Stream int streamとx main dev stream(通常はx < 5)

開発者一人のストリームは理想的ではありませんが、この設計は自分の手ではできません。ジェンキンズがこのストリームツリー。

私のチームメイトと私は、この設計を思い付いた:このデザインについて Jenkins/CC Continuous Integration Design

いくつかの注意事項:

  1. ジェンキンスは、いつでもユーザーを検出3-5分毎に実行するジョブを持っていますdevのストリームは新しいベースラインを持っています(ユーザはジェンキンによって検出されたユーザ開発ストリームのベースラインを作成しなければなりません。

  2. ジェンキンスストリームは、ユーザーdevストリームの子ストリームとして作成され、検出されたベースラインに基づいています。

    • ジェンキンスはこのストリームを使用してベースラインを再構築し、ベースラインを構築し、失敗した場合、ベースラインを拒否します(ユーザーは固定ベースラインを作成して再試行する必要があります)。
    • ビルドが成功すると、ベースラインが配信され、ベースラインが推奨されます。その時点で、ベースラインは配信されます。
    • リベースによってマージの競合が発生した場合、ユーザーは電子メールで通知を受けるため、ユーザーは再ベースして新しいベースラインを作成して再試行する必要があります(ストリームに新しいベースラインを作成する前にリベースする必要があります)。
  3. 一度ベースラインを検証し、ビルド結果に応じた行動を取って行われているジェンキンス、ジェンキンスは/ストリームを削除し、それがチェックだ実行するために作成したビューます。 (ジェンキンスストリームは、ジェンキンスが構築中の一時的なストリームです)。

  4. ジェンキンスさんは、同じコンポーネントのベースラインが平行してビルドできないだろう、とベースラインは、コンポーネントスコープで行われ2、コンポーネントごとのキューがあります。以下の根拠にしかし、我々は今のために停止されている、提案された設計をまとめ

:それは作成されるため、ユーザーdevの上でベースラインを作成

  1. ストリームは、「ひどいアイデアを」です与えられたファイルが壊れているとバックトラックしないので "混乱"します。
  2. ユーザーdevストリームのベースラインが多すぎると、「管理不能」な依存関係が作成され、指定されたファイル内の特定の変更を元に戻すために「かなりの時間」がかかります。
  3. 基本的に、このデザインは長期的に作成されるベースラインの量が非常に多いため、「持続不可能」です。

これは反対です。しかし、ユーザーdevのストリームから配信すると(現在の方法で行われている)、ストリーム上で配信のベースラインが作成されるため、ベースラインの量はこのデザインと他のデザインと同じです。

はしかし、カウンターの引数は:

の間で異なっているものを尋ねるときは「をお届けフォームストリーム上でのClearCaseで作成されたdeliveryblベースラインは、ユーザーが作成したベースラインとは異なり、彼らが管理している」

ベースラインは、応答があった。

実際の質問に私をもたらします

を「彼らが異なっている、私を信じて」

  1. このデザインは実際には持続不可能なものですか(長期依存関係チェーン)?
  2. ユーザーが自分のユーザーdevストリームにベースラインを作成し、その変更をユーザーdevストリームからメインのdevブランチに移動する方法としてこれらのベースラインを配信する際に問題がありますか?
  3. ユーザが作成したベースラインとdeliveryblベースラインは実際に異なっていますか?もしそうなら、どう違いますか?また、ベースラインを作成してdeliveryblと同等のベースラインを作成する方法についての要件をユーザーに与えることができますか?
    • これらが異なっている場合、ストリーム設計からの配信は実際には配信元とベースライン設計とでどのように異なり、後者を持続不可能にしていますか?
  4. このデザインを改善する方法についてのご意見はありますか?

ありがとう、私はこれが長い投稿であることを知っています。あなたが読んで、私の質問に答える時間を感謝します。

乾杯、 ロイ・バンティング

答えて

1

このデザインは実際に持続不可能な(長期依存チェーン)ですか?

はい、古いベースラインをクリーンアップするためのパージメカニズムを実装する必要があります。
rmblは、特にそのベースラインが配信の一部である場合は常に可能ではありません。

ユーザーdevのストリームにベースラインを作成し、その変更をユーザーのdevストリームからメインのdevブランチに移動する方法として問題がありますか?

原則は健全ですが、実装(ClearCase UCMが提供します)はコンポーネントのサイズによって非常に遅くなる可能性があります。
そしてその変化が自分自身を配信する前に、まだ有効であることを検証し、他の開発者が最初にリベースしたい場合があります順序の問題が存在し得る(as shown here

は、ユーザーが作成したベースラインと実際には異なるdeliveryblベースラインはありますか?

はい、「What is deliverbl in UCM ClearCase?」で説明しました。
ラベルの付いていないことに加えて、ハイパーリンクと特別なUCM属性を持つため、ラベルを簡単に削除することはできません。

+0

このデザインを改善する方法についてのご意見はありますか? ClearCaseでは、配信/リベースの回数を最小限に抑えることができます。ストリームごとにdevの溝:彼らは時間とリソースの無駄です。 – VonC

+0

はい、古いベースラインをクリーンアップするためのパージ機構を取り付ける必要があります。 rmblは、特にそのベースラインが配信の一部である場合は常に可能ではありません。 これは、配送によって作成されたベースラインとどのように違いますか?ストリームからの配信によって作成されたベースラインを模倣するように、ベースラインをラベルなしにすることができます。どちらの方法でもベースラインの量はまったく同じです。私があなたが言及した違いを見ましたが、これがどのように悪影響を及ぼし、私たちのデザインを妨げるかを見落としています。また、ジェンキンは、拒否されたベースラインを取り除いて、それ自体を取り除くことができました。 ご協力ありがとうございます。 –

+0

注文が来る限り、devsはベースラインを作成する前にリベースしなければなりません。キューを参照して、キューに入れられたベースラインが終了してからベースラインを作成してリベースします検証します。このプロセスは両方の設計で同じになります(ストリーム対ベースラインからの配信)。 –

関連する問題