質問

自動夜間ビルドをセットアップしたと仮定します。ビルドのどのアーティファクトを保存する必要がありますか

例:

  • ソースコードの入力
  • 出力バイナリ

また、どのくらいの期間、どこに保存すればよいですか?

継続的インテグレーションを行うと、答えは変わりますか?

役に立ちましたか?

解決

各ビルドで保持するために使用するいくつかのアーティファクト/情報を次に示します。

  • 構築するスナップショットのタグ名(タグを付けて、構築する 前にクリーンチェックアウトを行います)
  • ビルドは、自分自身またはバージョン番号をスクリプト化します(独自のバージョン管理を備えた別個のプロジェクトとして扱う場合)
  • ビルドスクリプトの出力:ログと最終製品
  • 環境のスナップショット:
    • コンパイラのバージョン
    • ビルドツールバージョン
    • ライブラリとdll / libsバージョン
    • データベースバージョン(クライアント&サーバー)
    • ideバージョン
    • スクリプトインタープリターのバージョン
    • OSバージョン
    • ソース管理バージョン(クライアントおよびサーバー)
    • プロセスで使用される他のツールのバージョンと、ビルド製品のコンテンツに影響する可能性があるすべてのもの。私は通常、このすべての情報を照会し、他のビルドアーティファクトと共に保存する必要があるテキストファイルに記録するスクリプトを使用してこれを行います。

この質問を自問してください:"何かが私のビルド/開発環境を完全に破壊した場合、新しい情報を作成するために必要な情報は何でしょうか? ?"

あなたの答えは、各ビルドで維持すべきものであり、すでに述べたもののサブセットまたはスーパーセットになります。

すべてをSCMに保存できます(別のリポジトリをお勧めします)が、この場合、アイテムを保持する期間に関する質問は意味を失います。または、Zipフォルダーに保存するか、ビルド結果とアーティファクトを含むcd / dvdを書き込む必要があります。何を選んでも、バックアップコピーを作成してください。

必要に応じて保存する必要があります。どのくらいの期間、開発チームのペースとリリースサイクルに依存します。

いいえ、継続的な統合を行っても変わらないと思います。

他のヒント

保存するために何も保存しないでください。必要なので保存する必要があります(つまり、QAはナイトリービルドを使用してテストします)。その時点で、「保存する期間」 QAが望んでいる時間が長くなります。

iは「保存」しません。それをタグ付け/ラベル付けするだけのソースコード。どのソース管理を使用しているのかわかりませんが、高品質のソース管理システムではタグ付けは簡単です(パフォーマンスとディスク容量)。ビルドにタグが付けられると、バイナリが必要でない限り、必要に応じてソースから再コンパイルできるため、バイナリを使用するだけの利点はありません。

ほとんどのCIツールを使用すると、ビルドが成功するたびにタグを付けることができます。 1日に100以上のタグを簡単に設定できるため、一部のシステムではこれが問題になる可能性があります。そのような場合には、ナイトリービルドを実行し、それだけにタグ付けすることをお勧めします。

これはあなたの質問に対する直接的な答えではありませんが、ナイトリービルドセットアップ自体のバージョン管理を忘れないでください。プロジェクトの構造が変更された場合、ビルドプロセスを変更する必要があり、それ以降の古いビルドは中断されます。

他の皆が言及したバイナリに加えて、シンボルサーバーおよびソースサーバーそしてそれらに正しい情報を出し入れすることを確認します。デバッグに非常に役立ちます。

バイナリを削除し、ストリップし、ストリップしないで保存します(デバッグシンボルの有無にかかわらず、まったく同じバイナリがあります)。さらに、すべてを2回ビルドします。1回はデバッグ出力を有効にし、もう1回は無効にします(繰り返しますが、ストリップとストリップを解除するため、すべてのビルドで4つのバイナリが生成されます)。ビルドは、SVNリビジョン番号に従ってディレクトリに保存されます。そうすれば、このリビジョンをチェックアウトするだけで、常にSVNリポジトリからソースを保持できます(ソースも同様にアーカイブされます)。

最近私が学んだ驚くべきもの:監査される可能性のある環境にいる場合は、ビルドのすべての出力、スクリプト出力、コンパイラー出力などを保存する必要があります。

これが、コンパイラ設定、ビルド手順などを確認できる唯一の方法です

  

また、保存する期間と保存する場所

ビルドが本番稼働しないことがわかるまで、それらを保存します。ただし、コンパイル済みのビットがある限りです。

それらを保存する1つの論理的な場所は、SCMシステムです。別のオプションは、AnthillProやそのilkなど、自動的に保存するツールを使用することです。

「埋め込み」に近い処理を行っていますここで開発し、保存する内容を説明できます:

  • SVNのリビジョン番号とタイムスタンプ、およびそれが構築されたマシン(およびビルドバイナリに焼き付けられたマシン)
  • フル/インクリメンタルビルドであるかどうかを示すフルビルドログ、生成されたデータベイキングツールの興味深い(STDERR)出力、コンパイルされたファイルのリスト、およびコンパイラーの警告(これは非常によく圧縮され、テキストです)
  • 実際のバイナリ(1〜8個のビルド構成の場合)
  • リンクの副作用として生成されるファイル:リンカーコマンドファイル、アドレスマップ、および一種の「マニフェスト」最終的なバイナリに書き込まれたものを示すファイル(CRCとそれぞれのサイズ)、およびデバッグデータベース(同等の.pdb)

また、「副作用」を介していくつかのツールを実行した結果をメールで送信します。関心のあるユーザーへのファイル。これらは後で再現できるため、実際にはアーカイブしませんが、これらのレポートには次のものが含まれます。

  • ファイルシステムサイズの合計とデルタ、ファイルタイプおよび/またはディレクトリ別に分類
  • コードセクションサイズの合計とデルタ(.text、.data、.rodata、.bss、.sinitなど)

単体テストまたは機能テスト(例:スモークテスト)を実行している場合、それらの結果はビルドログに表示されます。

まだ何も捨てていません-ターゲットビルドは通常、構成ごとに〜16または32 MiBになり、かなり圧縮可能です。

アクセスを容易にするため、バイナリの非圧縮コピーを1週間保持します。その後、軽く圧縮されたバージョンのみを保持します。約1か月に1回、ビルドプロセスが生成する各.zipを抽出し、1か月分のビルド出力を一緒に7-zipするスクリプトがあります(ビルドごとにわずかな違いのみを利用します)。

1日あたり、プロジェクトごとに1ダースまたは2ビルドがあります... buildserverは、関連する違いとビルドをチェックするために、約5分ごとに起動します。非常にアクティブな大規模プロジェクトの1か月間の完全な.7zは7-10GiBかもしれませんが、確かに手頃な価格です。

ほとんどの場合、この方法ですべてを診断できました。時々、ビルドシステムに問題があり、ファイルは実際にはビルドが行われるときに想定されているリビジョンではありませんが、通常はログに十分な証拠があります。時々、デバッグデータベース形式を理解し、クラッシュを診断するためにいくつかのアドレスを提供するツールを掘り出す必要があります(製品に自動スタックダンプが組み込まれています)。しかし、通常、必要な情報はすべてそこにあります。

言うまでもなく、.7zアーカイブをクラックする必要はありません。しかし、そこには情報があり、そこから有用なデータのビットをマイニングする方法についての興味深いアイデアがあります。

簡単に再現できないものは保存してください。 FPGAを使用しているのは、FPGAチームだけがツールを持ち、設計の一部のコア(ライブラリ)が1台のマシンでのみコンパイルするようにライセンスされている場合です。したがって、出力ビットストリームを保存します。ただし、日付/時刻/バージョンのスタンプではなく、相互に確認してください。

チェックイン時にソースコード管理に保存するか、単にディスクに保存しますか?ソースコード管理に何も保存しません。派生ファイルはすべて、ファイルシステムに表示され、開発者が利用できる必要があります。バイナリ、XMLファイルから生成されたコード、メッセージダイジェストなどをチェックインしないでください。個別のパッケージング手順により、これらの最終製品が利用可能になります。変更番号があるので、ビルドを行うために必要なすべてがツリーに完全にあり、すべてのビルドで同期によって利用可能であることを前提として、必要に応じてビルドをいつでも再現できます。

作成したバイナリが本番に入るか、他のチーム(QAグループなど)で使用される可能性がある限り、保存します。何かが生産を終了すると、それをどうするかは大きく異なります。多くのチームでは、(ロールバックのために)最新の以前のビルドのみを保持し、ビルドを破棄します。

その他には、7年もの間生産されたものを保管する規制要件があります(銀行)。あなたが製品会社の場合、技術サポート担当者が同じバージョンをインストールしたい場合に備えて、顧客がインストールした可能性のあるバイナリを保持します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top