如何防止 GitLab CI/CD 删除整个构建

How to prevent GitLab CI/CD from deleting the whole build

我目前遇到了一个令人沮丧的问题。

我在 VPS 服务器上设置了 GitLab CI,它工作得很好,我的管道 运行 没有问题。

问题出现在必须重做管道之后。每次 GitLab 都会删除构建所在的整个文件夹,然后再次构建它以进行部署。我的问题是我有一个“上传”文件夹,它存储所有上传的用户内容,每次我重做管道时,所有内容都会从此文件夹中删除,我显然需要这些内容,因为这是应用程序的目的。

我试过 GitLab CI 缓存 - 没有成功。我也试过创建一个新文件夹,它不在存储库中,它也会删除它。

运行 我的第一份工作是这样的: Job

如您所见,有很多行表示“正在删除...”

为了在集成 CI 管道时保留包含本地文件的文件夹,最好的方法是使用 Docker data persistency,因为您将能够删除上次构建中的所有内容,同时保留在构建之间应用程序中的本地文件,同时保持每次启动新管道时从拉伸开始的能力。

GitLab 的 CI/CD 文档提供了关于 how to persist storage between jobs when using Docker 构建应用程序的简短介绍。

我还想指出,如果您通过 SSH 使用 Gitlab Runner,它们会明确说明 they do not support caching between builds when using this functionality. Even when using the standard Shell executor, they highly discourage saving data to the Builds folder. 因此可以说最佳实践方法是使用绑定挂载卷到您的主机并将应用程序与用户上传的数据隔离。