JenkinsCIの最後のsvnリビジョンからSFTPへのファイルのアップロード
-
28-10-2019 - |
質問
SubversionからSFTPにファイルをアップロードするためのJenkinsジョブを構成しています。 SSH経由で公開は非常にうまくいっていますが、アップロードされますすべてのビルドのすべてのファイル。
一部のプロジェクトでは、数千のファイルがあり、アップロードに1時間以上かかるため、これはオプションではありません。
最後のリビジョンで変更されたファイルのみをアップロードする方法を誰かが提案できますか?
解決
Subversionプラグインを使用して、SVNの変更をポーリングして実行できます特に何もしない仕事。それを YourPollingJob と呼びましょう。次に、次のようにhttp経由でJenkinsAPIを呼び出します。 ジェネラコディセタグプレ
ここで、BUILD_ID
は、実行したばかりのジョブの実際のビルドIDです(通常の形式は、2012-02-21_16-15-49
のようなものです)。結果を調べます。前回のビルド以降に変更されたファイルに関するすべての情報がそこにあることに注意してください。解析する必要があるだけです。
これで、次のことができるようになります。 YourPollingJob は別のジョブを呼び出します( CopyJob と呼びましょう)。そのジェネラコディセタグコードをパラメータとして渡します(パラメータ化されたトリガープラグイン;必ず CopyJob ビルドステップとしてではなく、ビルド後のステップとして)。 CopyJob は、http経由でJenkinsにクエリを実行し(上記のように、BUILD_ID
経由で行うのが最善の方法です)、結果を解析してコピーを実行します。
すべてを1つのジョブで実行できますが、少し複雑でデバッグが困難です。
また、リポジトリ全体を1日1回(毎晩)コピーすることをお勧めします。
他のヒント
これらのファイルを別のリポジトリに保存できます。あなたの場合、mercurialやgitのような分散型VCSが最適だと思われます。ワークスペースでセットアップし、変更されたファイルをコミットするビルドステップを追加し、コミットを公開するサーバーにプッシュすることができます(ワークスペースを消去したり、複数のファイルでビルドしたりしない限り、これは機能するはずです)マシン)または追加の手順を追加して、保持しているサーバーからのアーティファクトを使用してリポジトリのクローンを作成/プルします。