ドッグフーディング時にツールの次のリビジョンを使い始めるのはいつが適切ですか?


9

具体的には、DVCSとビルドシステムを統合するツールに取り組んでいますが、「メタ」ツール(コンパイラ、VCS、ビルドシステム、テストランナーなど)を開発している人が直面する課題をイメージしています「ドッグフーディング」を通じて発展したい。

私の質問は分岐ワークフローを使用したスクラムスタイルのリリースプロセスで、ツールの開発サイクルで新しいバージョンのツールの使用を開始するのはどの時点ですか?

私は、以下のバランスを取るプロセスを探しています。

  • 常にdevelopツールのバージョンを使用します。変更が組み込まれると、自分の開発が中断されます。

  • 常にmasterツールのバージョンを使用します。ドッグフーディングによって明らかになった問題は、すでにリリースされている問題です。


それはあなたが何を達成したいかによります。マスターバージョンを販売するだけで十分でしょうか。バグを明らかにしたい場合は、毎晩使用する必要があります。
アンディ

@ GlenH7ありがとう!ここから始めました:meta.programmers.stackexchange.com/questions/6074/…–
Jace Browning

回答:


5

最初に行うことは、完全な自動オフライン回帰テストを行うことです。これらのテストに合格することを、公式に使用するものの最小要件にします。

次に、自動テストで検出されない問題のために、以前の作業バージョンにフォールバックする非常に簡単な方法が必要です。

たとえば、私のLinuxカーネルにはしばらくの間カスタムパッチが適用されていました。カーネルを使用するつもりのコンピューターと同じコンピューターでカーネルにパッチを適用してコンパイルします。つまり、欠陥のあるカーネルを作成した場合、開発環境が失われる可能性があります。そのため、既知の良好なカーネルを常にGRUBメニューに保持するようにしたので、間違えた場合は、単純なリブートで良好な開発環境に戻りました。

チームとの調整は難しいですが、ほとんどの場合、だれでもフォールバックを開始して理由を伝えることができるようにすることだと思います。バージョン管理では、それを指定する1つの方法は、ワークフローのlast_known_goodどこかの間developmasterワークフローのどこかにあるブランチのようなものです。ビルドのドッグフードが成功するまで、何もプッシュされません。


1
dogfooddevelopとの間のどこか」にある別のブランチ(おそらく)を持つというアイデアが好きmasterです。おそらくreleasedogfoodブランチはブランチからのものでなければなりません。
ジェイスブラウニング

3

このツールを使用して本番品質のソフトウェアを作成している場合(特に、それを再帰的に使用する場合、つまり、それ自体を開発する場合)、事前のテスト作業を増やし、リリースが十分に安定するまでドッグフーディングを待ちます。あなたがそれを使用することによって製品コードを壊すことはないと確信しています。

マスターバージョンがそのレベルの信頼を得るのを待つ必要がある場合は、そうしてください。


これは、統合テストに使用する「偽の」(非プロダクション)プロジェクトを作成することを意味しますか?
ジェイスブラウニング

もしそれが暫定的な内部リリースを意味するのであれば、そうです。
Robert Harvey

1

Gitもそのようなツールであり、明らかにドッグフーディングも行います。しかし、それはさまざまな環境でさまざまな程度で行われます。公開サーバーはリリースのみを実行していますが、開発者は通常next(gitプロジェクトの「開発」の名前)またはpu(開発よりも開発)のどちらかで作業します。戻ることができますいくつかの問題によりブロックされているすべての開発者nextmaster問題は、それを参照することによって清浄化することができるように、彼らは何か、メインリポジトリによってブロックされるたびに、または最後のリリースには、影響を受けません。

分岐モデルは上記と似ていますが、名前が少し異なります。master大きなリリースが行われるものでmaintあり、次のポイントリリースのリリースブランチであり、next開発に似ていますが、次の全体がマージされるのではなく、次の時点で機能が個別にマスターにマージされる可能性があります。

余分なブランチがありpuます。これは、統合の対象となるすべての機能ブランチを一緒にマージすることによって作成されますnext(ブランチは破棄され、毎回再作成されます)。IIRCは、テストスイートに合格した場合にのみ公開されます。最後に、メンテナであるJunioがスクリプトを実行して定期的に手動でビルドしていたのを確認しましたが、そのようなスクリプトは継続的な統合によって毎晩実行でき、Gerritが自動的に作成することもあると思います。

それがその答えです。開発環境にある最も開発中のバージョンをドッグフードしますが、リリースのビルドには以前のリリースを使用します。


ないpu何かのために立ちますか?
ジェイスブラウニング

@JaceBrowning:「提案されたアップデート」を表すものだと思います。参照はありませんが。
Jan Hudec 2013

1

受け入れられた回答に基づいて、次のような分岐を維持するために分岐ワークフローを拡張します。

  • masterrelease-*閉鎖時にマージ
  • dogfood:枝からmaster。dogfood中に特定された修正が含まれます。developソフトウェアが内部での使用に対して「安定」していると見なされた時点からマージします。このブランチのヘッドは、必要に応じて前に戻すことができます
  • develop:枝からmaster。進行中の変更、バグ修正、dogfoodおよびfeature-*ブランチからのマージが含まれます
  • feature-*:枝からdevelop。特定の新機能の変更を含みます
  • release-*dogfoodソフトウェアが外部使用に対して「安定」であると見なされたときから分岐します。とマージする前のドキュメントの更新とマイナーなバグ修正が含まれていますmaster
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.