2017-06-29 10 views
2

ターゲットを構築した後で、これらを展開する必要があります。ターゲットを再構築するように強制する

実際にはは時間を無駄にしませんビルドルールとしてそれをお持ちですか?これが機能するには、のたびにのデプロイを実行したいと考えています。 質問は次のとおりです。

確定的にターゲットを再構築するにはどうすればよいですか?

+0

この問題を解決するには、おそらく複数のターゲットに対してrunを呼び出すことができます。 – abergmeier

+0

またはリモート展開を入力として使用できるようにする。 – abergmeier

+0

枢機卿はどのように「アーティファクトが構築された後に展開する」と「最後に」を対比していますか? – Ittai

答えて

1

あなたが展開するときbazel run //path/to:deploy-targetsを行うなど、

java_binary(
    name = "target1", 
    ... 
) 

java_binary(
    name = "target2", 
    ... 
) 

sh_binary(
    name = "deploy-targets", 
    srcs = ["deploy-targets.sh"], 
    data = [":target1.jar", ":target2.jar", ...], 
) 

次に、第二段階として、これを行うために、よりbazel-yのだろう。その休憩の種類その契約を展開し、外部環境と対話することになっていません(ビルド中に発生するものです)

#!/bin/bash 

for t in $(ls ws/path/to/*.jar); do 
    mvn deploy:deploy-file -Dfile=$t ... 
done 

アクション:

deploy-targets.shは、次のようになります。一方、runは、何でもできます。バイナリを実行しているだけです。

runを使用すると、「毎回実行する」問題も解決します.Bazelはバイナリをフォークすることはできません。

+0

複数のターゲットをそれぞれ複数ギガバイト転送する必要があります。そして私は複数のターゲットを '走らせることができないので、それを逐次的に行うことは、最も少ないと言える本当に悪いユーザー体験です。 – abergmeier

+0

'data = [":target1 "、":target2 "、...]'できますか? – kristina

+0

あなたはそれをどういう意味か、少し詳しく説明できますか?私が「データ」を使用して考えることができるすべての順列は、私の要件の1つを破ります。 – abergmeier

関連する問題