我有一个Bitbucket私有存储库,我在服务器上安装了Jenkins。我配置了在使用push更新bitbucket存储库时创建生成的项目。我还配置了“后期构建操作”以通过ftp/sftp发送更新的文件。除了jenkins将整个站点发送到目标ftp帐户之外,一切正常,不管我是否在一个文件更改的情况下推送了提交。
只需提到,当我转到project/build/changes时,它只列出了更改过的文件。似乎“通过ftp发送构建工件”没有意识到这一点并发送整个工作区
在project > settings > post build actions > send build artifacts over FTP > Transfer set > Source files
中,我设置了**
。我需要更改这个值吗?
有人能帮我设置詹金斯项目,只上传更改和新的文件吗?上传2000个文件,而只在其中添加/更改了两个文件,这是荒谬的。
最佳答案
为什么会这样?
jenkins将整个站点发送到目标ftp帐户,而不管我是否在一个文件更改的情况下推送了提交。
每次提交不仅仅是更改的文件。It's actually a snapshot整个工作树(项目文件夹)。这可能就是为什么詹金斯发送整个项目,而不仅仅是更改的文件。
如何仅筛选更改的文件?
有一种方法可以过滤由最后一次提交(或n次最后提交)更改的文件。希望这能帮你找到最终的解决方案。
这仅显示更改的文件:
git show --pretty="format:" --name-only HEAD
这应该是复制它们的:(由于另一个操作系统,我现在无法工作,正在尝试移植它)
git log -1 --pretty=format:"%h" | xargs -I %id% git diff-tree --no-commit-id --name-only -r %id% | xargs -I % cp --parents % upd/
使用
-number
而不是-1
搜索最后提交的次数。在詹金斯怎么办。
抱歉,还不知道如何配置jenkins。但这是需要做的:
使用上面的命令将更改的文件复制到项目外部的文件夹中。
让詹金斯用ftp上传
清除文件夹以备将来重用。
此解决方案的部分翻译自ru.stackoverflow
关于git - 如何使Jenkins过滤器文件在上一次提交中更改并通过FTP/SFTP发送,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30287741/