2016-11-28 85 views
0

因此我试图在Jenkins中创建一个用于连续传送的管道。我的第一步是将git存储库导入到我的Jenkins服务器。为了给出一个想法,我的git仓库托管在一个bitbucket服务器上(例如testrepository.git)。现在,这个仓库里的结构如下获取已在git存储库中修改的项目

Testrepository.git

  • 项目1
  • 项目2
  • 项目3

我的目标是让项目的列表,它已经被修改,只能在我的管道中构建。有没有办法做到这一点?所有项目都是带有Gradle构建文件的java项目

+0

假设有一个很好的理由,让您的项目/回购的结构是这样,我会用'混帐登录--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 
相关问题