【问题标题】:Gitlab CI: get list of files changed since last runGitlab CI:获取自上次运行以来更改的文件列表
【发布时间】:2021-09-26 20:53:29
【问题描述】:

我目前正在使用 Gitlab CI 开发 CI。

我可以使用以下方法获取最后两次提交之间的修改文件列表:

git log -m -1 --name-only --pretty="format:"  HEAD

但我想获得自上次运行 Gitlab CI 以来更改的文件列表,其中可能包含多个提交。有没有办法得到这样的名单?

【问题讨论】:

    标签: git gitlab gitlab-ci


    【解决方案1】:

    这看起来与 [gitlab-org/gitlab issue 17822][1] 完全一样,它在 4 年前(2017 年 4 月)请求 CI_PREV_COMMIT_SHA

    在我们的 GitLab 设置中,我们为 only: master 配置了 CI 作业(尽管 这个问题在这个范围之外是相关的)。

    我们遇到的问题是,我们希望某些作业知道当前作业之前的“前一个 HEAD”是什么。

    这对于 MR 来说相对容易获得,因为之前的 HEAD 只是 HEAD^
    但是,我们也有特权 Master 用户,他们会定期将一系列提交一次性推送到 master。在这种情况下,无法确定HEAD 在推送之前是什么。

    出于这个原因,我希望我们可以得到像 CI_PREV_COMMIT_SHA 这样的变量,或者类似的东西,可以为跑步者提供这些信息。

    在使用 GitLab 之前,我们在裸 repo 中使用 post-receive 钩子运行自动化,并且这个钩子脚本提供了之前和 当前版本。
    现在有了 GitLab CI 运行器,我们无法复制我们的脚本行为 不知道以前的 REV 是什么。

    这还没有实现:您可能需要(作为一种粗略的解决方法)将该信息存储在一个文件中,并在您的构建环境中访问一个共享文件夹:然后您可能能够在下一次读取该文件你的工作的发生。 [1]:https://gitlab.com/gitlab-org/gitlab/-/issues/17822

    【讨论】:

    • 好的,有什么方法可以让 Gitlab CI 更新 repo 本身(例如,创建一个 last_execution_hash.txt 和最后一个提交 ID 以便稍后读取)?即使我设法获得与最后一次 CI 执行相关联的提交 sha-id,我应该使用哪个命令来获取绝对最后一次提交 (HEAD) 和另一个 sha-id 之间的差异?谢谢
    • @EagleOne 更新存储库?也许,通过从你的工作中推送一个单独的分支中的新提交:stackoverflow.com/a/55344804/6309
    • @EagleOne 至于差异:stackoverflow.com/a/9903611/6309
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2021-10-14
    相关资源
    最近更新 更多