2016-11-28 8 views
0

これで、Jenkinsでパイプラインを継続的に作成しようとしています。私の最初のステップは、gitリポジトリをJenkinsサーバーにインポートすることです。私のgitリポジトリはbitbucketサーバ上でホストされています(例えばtestrepository.gitの場合)。次のように今、このリポジトリ内構造があるgitリポジトリで変更されたプロジェクトを取得します。

Testrepository.git

  • プロジェクト1
  • プロジェクト2
  • プロジェクト3

私の目的は、プロジェクトのリストを取得することです私のパイプラインにあるものだけをビルドしました。これを達成する方法はありますか?すべてのプロジェクトは、gradleビルドファイルを持つJavaプロジェクトです

+0

プロジェクト/レポ構造をこのように保つ理由があるとすれば、私は 'git log --stat'を使って修正ファイルを入手し、個々のプロジェクトファイルリストと比較することで何かをします。私はGradleにあまり慣れていませんが、プロジェクトに含まれるすべてのファイルやディレクトリを追跡する何かをGradleの設定に含めるべきだと思います。 – Pockets

+0

@Pocketsは、上記のコマンドの出力を手動でチェックして特定のプロジェクトをビルドすると言っていますか?任意のスクリプトを使用して取得する方法はありますか?私はプロセスを自動化したいと思うだろう。また、いくつかのプロジェクト(〜50)と相互依存関係があります。したがって、このレポ構造。 – jugal

+0

いいえ、 'git log'の出力と個々のプロジェクトファイルリストの自動比較をスクリプト化し、それを使ってJenkinsが新しいビルドをどのようにトリガするかを判断できるはずです。 – Pockets

答えて

1

git log --name-onlyは、コミットごとに変更されたファイル名のリストを表示します。ファイル名リストを分析して、変更されたプロジェクトを判断することができます。

継続配信を行う場合は、最後の配信の修正ファイルリスト を次のコマンドで取得できます。最後の配信タイムスタンプは「2016-11-10 16:00」とします。

git diff $(git rev-list -n 1 --before="2016-11-10 16:00" HEAD) --name-only 
関連する問題