ファイルから以前のバージョン番号を読み取り、新しいバージョン番号と現在の日付でソース ファイルを更新し、次のビルドの準備ができている元のファイルに番号を書き戻すように scons を取得したいと思います。
これは、ターゲットが古い場合にのみ発生する必要があります。IOW ビルドが行われない場合、バージョン番号は変更されません。元のファイルはソース管理されており、ソース ファイルではありません。それ以外の場合は、チェックイン時に別のビルドをトリガーする可能性があります (CI による)。明確化sconsの観点からは、ソース ファイルが自動生成されるため、コードは常に最新ではありませんが、scons は、SCM の変更が検出された場合に継続的インテグレーション ジョブ (Jenkins) からのみ実行されます。
を調べましたAddPostMethod
が、これはソース ファイルのリスト内のすべてのファイルに対して発生するようです。
Command
およびBuilder
メソッドは を使用するVARIANT_DIR
ため、これらのファイルを編集できず、リポジトリにマップされなくなったため、再度チェックインできません。
私はアイデアが不足している他のsconsの詳細のいくつかを誤解しているだけだと思っています!
更新 これをもう少し考えてみると、トムのコメントは正しいです。バージョン管理されたテキスト ファイル (非ソース コード) とソース管理されていないソース ファイルの 2 つのファイルがありますが、1 つのファイルをチェックインしてビルド/チェックインの連続サイクルを防ぐ方法はありません。Jenkins は新しいテキスト ファイルを確認してビルドをスピンオフし、scons は新しく生成されたファイルを確認します。したがって、生成されたファイルをある時点で削除しない限り、これは両方のツールのワークフローに反するようです。
これを達成する方法はありますか?それはかなり簡単に思えます。最終的には、ビルドが開始されるたびにビルド番号を生成したいだけです。