【发布时间】:2021-09-26 20:53:29
【问题描述】:
我目前正在使用 Gitlab CI 开发 CI。
我可以使用以下方法获取最后两次提交之间的修改文件列表:
git log -m -1 --name-only --pretty="format:" HEAD
但我想获得自上次运行 Gitlab CI 以来更改的文件列表,其中可能包含多个提交。有没有办法得到这样的名单?
【问题讨论】:
我目前正在使用 Gitlab CI 开发 CI。
我可以使用以下方法获取最后两次提交之间的修改文件列表:
git log -m -1 --name-only --pretty="format:" HEAD
但我想获得自上次运行 Gitlab CI 以来更改的文件列表,其中可能包含多个提交。有没有办法得到这样的名单?
【问题讨论】:
这看起来与 [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
【讨论】: