私は、継続的な統合環境でプロジェクトを構築するためのカスタムタスクを構築しようとしています。これは、コンパイル sbtでタスクをどのように構成しますか?
- 送信ビルドの線に沿ってステップのセットです
- デプロイメントサーバにアーティファクトをアップロード
- 実行テスト
- は、当社の展開サーバーへのテスト結果を送る
- 送信部屋10は任意のステップが失敗した場合に行われるべき、とのメッセージがどのステップ失敗に応じてカスタマイズする必要があるステップ
注意をチャットする結果メッセージを構築し、例えばステップ5が失敗した場合、「コンパイルに失敗しました」と表示されます。ステップ8が失敗すると、実行されたテストの数と失敗した数が示されます。
これはマルチプロジェクトビルドなので、テストを実行して結果を公開するときにすべてのテストを実行し、集計結果を公開する必要があります。
さらに興味深いことに、npmテスト、jshint、およびアーティファクトは、webapp
サブプロジェクト(Javascriptが存在し、Webサーバーが存在する)で実際に意味をなさないだけです。
私はインスピレーションのためにsbt-releaseを見てきましたが、私は1つのタスクによって生成された価値をどのように取って、次の1つでそれを使用するか、集計でタスクを実行し、 (Extracted
の集計タスクを実行するメソッドがありますが、生成された値は与えられません)、サブプロジェクトでタスクを実行して生成値を取得する方法、およびエラー処理を行う方法
これまでのところ、私が試した二つのアプローチ上記と
npmTest.result.value match {
case Inc(inc) =>
println(inc)
case Value(res) => Def.taskDyn {
(executeTests in Test).result.value match {
case Inc(inc) =>
println(inc)
case Value(res) =>
println(res)
}
}
問題はexecuteTests
は常にnpmTest
が失敗しても、実行されていることです。そしてprintln
のどれも実行されません。
npmTest.result.
flatMap {-
case Inc(inc) =>
task { println(inc) }
case Value(res) =>-
(executeTests in Test).result.
flatMap {
case Inc(inc) =>
task { println(inc) }
case Value(res) =>
task { println(res) }
}
}
(executeTasks in Test)...
がInitialize[Task[Unit]]
値を生成し、Task[Unit]
が必要とされているため、この1つはコンパイルされません。
これをsbtで行う方法はありますか?
ちょっと考えてみましょう。シェルスクリプトを書くだけでいいかもしれません。これがすべてsbtの枠組みで起こるための厳密な必要性はありますか? –
書かれているように、質問は非常に広いです。マニュアルを読んだり、何か具体的なことにこだわらなければ、ここで1つ以上の質問を開き、コードを表示する以外の方法を知ることは難しいです。 –
現在、ハッキングされたシェルスクリプトを使用しています。その問題は、興味深い情報、例えばコンパイルが失敗したということですか?いくつのテストが実行/失敗したか?それほど簡単には入手できません。私が今までしようとしたことは、 'sendBuildStart.flatMap(コンパイル時にコンパイルする).result.flatMap {case Inc(inc)=> sendCompileFailure(inc); case Value(_)=>テストでテスト).result.flatMap {case Inc(inc)=> sendTestFailed(inc);大文字小文字の値(_)=> .... '残念ながら何も実行されていないようです。 – purefn