3

単純な要件にもかかわらず、ビルド プロセスの定義と自動化に問題があります。

  1. すべてのビルドには固有のビルド番号が必要です。
  2. タグ付けされたすべてのリリースは再現可能でなければなりません

私が持っているもの:

  • C++、Red Hat Enterprise Linux 5.x、Subversion 開発環境。
  • ビルド マシン (実際には仮想マシン)
  • メジャー、マイナー、およびビルド番号の #defines を含む version.h ファイル。
  • version.h ビルド番号をインクリメントするためのスクリプト。
  • タグ付けされた Subversion ソースをエクスポートし、ビルドして、rpm インストーラー パッケージを作成する rpmbuild 仕様ファイル。

質問:

  • プロジェクトごとに複数の開発者がいると仮定すると、いつビルド番号を増やして version.h ファイルをチェックインする必要がありますか? ビルドマシン?ある種の Subversion フック? ビルド前またはビルド後?

時間をかけてビルド プロセスの経験を喜んで共有してくださった方々に、事前に感謝します。

-Ed Linux 初心者。元 Windows C++/.NET 開発者。

4

3 に答える 3

1

リポジトリから最新のリビジョン番号を取得し、それをビルド番号として使用するように、ビルド プロセスを変更してみませんか?

svn が製品のビルドに含まれるすべての要素を組み込んでいると仮定すると、潜在的な異なるビルドごとに一意の番号が与えられ、ビルド時のコードベースの状態を簡単に照合できるようになります。時間とともに変化する他の要素がある場合は、リビジョン番号に連結された別の項目 (おそらく日付/時刻の値) を追加できます。

開発者がコミットするたびにリビジョン番号が自動的にインクリメントされるため、手動でインクリメントすることを心配する必要はありません。

于 2010-04-16T13:50:16.457 に答える
1

ビルド番号をファイルに直接保存しないでください。ビルド識別子として Subversion リビジョン番号 (または日付/時刻などの単調に増加する値) を使用してください。date -u +"%Y%m%d%H%M%S"以前は、 SVN ではなく CVS を使用していたため、 の値を使用していました。

于 2010-04-16T13:51:32.617 に答える
1

私たちの製品にコードを追加する最大 40 人以上の開発者のチームがあります。各開発者は、製品の中央の場所に変更を送信します。これにより、コード提出の順序付きリストが形成されます。次に、スクリプトは各送信を受け取り、最後にリリースされた構成と現在のラウンドで以前に送信された変更に基づいてテスト ビルドに統合します。各コード提出がコンパイルされた後に単体テストが実行され、現在のラウンドで追加された受け入れテストも実行されます。毎日の終わりに、進化するビルドに対して単体テストと回帰テストが実行されます。

週に 2 回、提出されたコード変更のリストがまとめられ、それが製品の新しくリリースされた構成になり、コードベースが更新されます。

于 2010-04-16T14:11:08.360 に答える