gpt4 book ai didi

git - 如何使 Jenkins 过滤器文件在上次提交时更改并通过 FTP/SFTP 发送

转载 作者:太空狗 更新时间:2023-10-29 14:23:16 25 4
gpt4 key购买 nike

我有 Bitbucket 私有(private)存储库,并且在服务器上安装了 Jenkins。我配置了在使用推送更新 Bitbucket 存储库时创建构建的项目。我还配置了“构建后操作”以通过 FTP/SFTP 发送更新的文件。一切正常,除了 Jenkins 将整个站点发送到目标 FTP 帐户,无论我是否推送了一个更改了文件的提交。

只是提一下,当我转到 project/build/changes 时,它只列出了更改的文件。似乎“通过 FTP 发送构建工件”并没有意识到这一点并发送了整个工作区

project > settings > post build actions > send build artifacts over FTP > Transfer set > Source files 我已经设置了 **。我需要更改此值吗?

有人可以帮我设置 Jenkins 项目只上传更改过的文件和新文件吗?上传 2000 个文件而只添加/更改了几个文件是荒谬的。

最佳答案

为什么会这样?

Jenkins sends entire site to the target FTP account, regardless i pushed a commit with one file changed.

每次提交不仅仅是更改的文件。 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 做什么。

抱歉,还不知道配置 Jenkins 的确切方法。但这就是需要做的:

  1. 使用上面的命令将更改的文件复制到项目外的文件夹中。
  2. 让 Jenkins 通过 FTP 上传它们
  3. 清除文件夹以便将来重复使用。

此解决方案的部分翻译自 ru.stackoverflow

关于git - 如何使 Jenkins 过滤器文件在上次提交时更改并通过 FTP/SFTP 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30287741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com