私たちはJenkinsとSBT plugingを使ってアプリケーションをビルド、テスト、デプロイしています。非常に長いコンパイル時間につながる「テスト」や「ステージ」の前に、人々が「クリーン」なコマンドを使用するところはどこにでもあります。プロダクションビルドの "ステージ"の前にSBTを "クリーン"にする必要がありますか?
ビルドごとにすべてをクリーニングする必要がありますか?プロダクションビルドにインクリメンタルコンパイラを使用するリスクはありますか?
私たちはJenkinsとSBT plugingを使ってアプリケーションをビルド、テスト、デプロイしています。非常に長いコンパイル時間につながる「テスト」や「ステージ」の前に、人々が「クリーン」なコマンドを使用するところはどこにでもあります。プロダクションビルドの "ステージ"の前にSBTを "クリーン"にする必要がありますか?
ビルドごとにすべてをクリーニングする必要がありますか?プロダクションビルドにインクリメンタルコンパイラを使用するリスクはありますか?
sbt
へのビルドスクリプトまたはコマンドラインが変更されていない場合は、clean
を実行する必要はありません。
私はSpark
を数年間使用しています。これは、最も複雑なsbtビルドの1つです。ビルドプロセス自体(project/sbtビルド成果物とsbtコマンドラインで実装されている)が以前の実行と同じであれば、clean
を実行することを避けるためにはうまく動作します。
私はそれが味の問題だと思います。継続的な統合ビルドの場合は、インクリメンタルコンパイラを使用しても構いません。何かが失敗した場合、私は非常に迅速に調査することができます。
しかし、何らかの理由でインクリメンタルコンパイラがいくつかの変更を無視することに決めた場合(それはすでに私が開発中に起こったことです)、解決するのが難しいバグがあるかもしれません。
新しいコードチェックアウトから再現可能なものが必要な場合は、他のすべての前に "クリーン"を実行してください。
ほとんどの場合、テストビルド、コード変更、ビルド対象のビルドの2つのビルドタスクを使用してjenkinsを構成し、定期的に(または場合によっては自動展開で手動で)トリガーします。