如何在构建Gitlab时清除缓存?

7
Gitlab无法在构建时清除我的缓存。如何解决这个问题?
执行器:shell
Fetching changes...
warning: failed to remove config/__pycache__/__init__.cpython-36.pyc
warning: failed to remove config/settings/__pycache__/local.cpython-36.pyc
warning: failed to remove config/settings/__pycache__/__init__.cpython-36.pyc
warning: failed to remove config/settings/__pycache__/common.cpython-36.pyc
warning: failed to remove config/settings/__pycache__/test.cpython-36.pyc
warning: failed to remove docs/__pycache__/__init__.cpython-36.pyc

你需要提供更多关于你的设置的细节。你标记了它为 dockerdocker-compose - 是否有任何使用 Docker 运行的东西? - Martin
1
基于 https://github.com/pydanny/cookiecutter-django 的项目。 - Mitya Grebenshchikov
我正在面对这个确切的问题,正在调查中... - Goran
2个回答

3
幸运的是,我也遇到了与您类似的问题(我想)。
一些背景信息:
我正在使用gitlab ci使用远程runner(shell)构建docker镜像,然后运行一些测试。
原因:
我通过传递-v标志给docker run来在容器内挂载本地目录(还有其他的方法,例如使用compose yml)。
由于docker容器以root身份运行,在本地文件系统上生成的__pycache__目录和文件由root拥有;这意味着docker-runner没有权限在下一个构建中删除它们。
解决方案:
取消挂载,并复制文件。

2
我通过不让Python创建*.pyc文件来解决问题。 这里有更多信息。请注意,您需要设置环境变量PYTHONDONTWRITEBYTECODE为1。

虽然两个答案都是正确的,但我更喜欢这个答案,原因有两点: 1)它更符合我的部署策略 2)在Selenium容器中使用-v PYTHONDONTWRITEBYTECODE=1比为多个项目构建Dockerfile并复制路径要容易 - ir0h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接