2012-02-21 50 views
2

SubversionからSFTPにファイルをアップロードするためにJenkinsジョブを設定しています。 Publish Over SSHはかなりうまくいっていますが、すべてのビルドにすべてのファイルがアップロードされます。最後のsvnリビジョンからJenkins CIのSFTPにファイルをアップロード

いくつかのプロジェクトでは、何千ものファイルがあり、アップロードに1時間以上かかるため、これはオプションではありません。

最後のリビジョンで変更されたファイルのみをアップロードする方法はありますか?

+0

いずれかの回答が役に立ちましたか? –

答えて

1

Subversion Pluginを使用して、SVNの変更をポーリングし、特に何もしないジョブを実行できます。 YourPollingJobとしましょう。 BUILD_IDはあなただけ実行したジョブの実際のビルドIDです

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet 

(通常のフォーマットは2012-02-21_16-15-49のようなものです):次に、このようなHTTP経由ジェンキンスのAPIを呼び出します。結果を調べる。以前のビルドから変更されたファイルに関するすべての情報がそこにあることに注意してください - あなたはそれを解析する必要があります。

だから今、あなたは、次の操作を行うことができますYourPollingJobは別の仕事を呼び出します - Parameterized Trigger Plugin経由(およびパラメータとしてそれにそのBUILD_IDを渡す - のはCopyJobそれを呼びましょう。としてCopyJobを呼び出すようにしてくださいビルドステップではなくビルド後のステップ)。 CopyJobは、httpを介してJenkinsに問い合わせます(上記のように、wgetで行うのが最善の方法です)、結果を解析してコピーを実行します。

1つのジョブですべて実行できますが、もう少し複雑でデバッグは難しいです。

また、リポジトリ全体を1日1回(夜間)にコピーすることはおそらく賢明です。

1

これらのファイルを別々のリポジトリに保存することができます。あなたのケースでは、水銀やgitのような分散型VCSが最善のように思えます。ワークスペースに設定し、ビルドステップを追加して、変更されたファイルをコミットし、コミットをパブリッシュするサーバーにプッシュすることができます(ワークスペースを一掃したり、マシン)を使用するか、追加のステップを追加して、保管しているサーバーの成果物を使用してレポをクローン/プルします。

関連する問題