我有Bitbucket私有存储库,我在服务器上安装了Jenkins。我配置了在使用push更新Bitbucket存储库时创建构建的项目。我还配置了“post built actions”以通过FTP / SFTP发送更新的文件。一切正常,除了Jenkins将整个站点发送到目标FTP帐户,无论我推送一个更改了一个文件的提交。
提一下,当我去项目/构建/更改时,它只列出已更改的文件。似乎'通过FTP发送构建工件'不知道这一点并发送整个工作区
在project > settings > post build actions > send build artifacts over FTP > Transfer set > Source files
我设置了**
。我需要更改此值吗?
有人可以帮我设置Jenkins项目只上传更改的文件吗?上传2000个文件是荒谬的,而只添加/更改了几个文件。
答案 0 :(得分:0)
Jenkins将整个站点发送到目标FTP帐户,无论我是否通过更改一个文件推送提交。
每次提交不仅仅是更改的文件。整个工作树(项目文件夹)的It's actually a snapshot。这可能是Jenkins发送整个项目而不仅仅是更改文件的原因。
有一种过滤文件的方法,由最后一次提交(或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的确切方法。但那就是需要做的事情:
此解决方案的部分内容来自ru.stackoverflow