Docker 从共享缓存同时安装两个项目时,CI上的composer拒绝访问
我们正在使用Docker 从共享缓存同时安装两个项目时,CI上的composer拒绝访问,docker,caching,gitlab,composer-php,Docker,Caching,Gitlab,Composer Php,我们正在使用 Composer version 2.0.11 2021-02-24 14:57:23 在docker Box上的GitLab CI环境中安装软件包 其目的是在所有容器中都有一个全局编写器来保存bandwith 容器中的合成缓存设置为/cache 我们的/etc/gitlab runner/config.toml如下所示: concurrent = 6 check_interval = 0 [session_server] session_timeout = 1800 [
Composer version 2.0.11 2021-02-24 14:57:23
在docker Box上的GitLab CI环境中安装软件包
其目的是在所有容器中都有一个全局编写器来保存bandwith
容器中的合成缓存设置为/cache
我们的/etc/gitlab runner/config.toml
如下所示:
concurrent = 6
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-git-runner-example-dev"
url = "https://git.example.de/"
token = "xxxxx"
executor = "docker"
[runners.custom_build_dir]
enabled = true
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
image = "ubuntu"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache:/cache", "/var/run/docker.sock:/var/run/docker.sock", "/builds:/builds", "/results:/results", "/var/review-test-deploy/:/var/review-test-deploy/" ]
shm_size = 0
现在,当管道被触发时,两个作业(test
和deploy review app
)在不同的容器中执行相同(Magento 2)项目的composer安装
人们偶尔会得到这样的东西
[ErrorException]
copy(/cache/files/aws/aws-sdk-php/3cf3ce74eb752563151499d9305ecba2045b86aa.zip): failed to open stream: Permission denied
有人也经历过这个问题吗?我们知道还有GitLab缓存,它可以在下一台机器上上传和下载缓存,但我们认为这样更有效
我们是否应该将此报告为编写器问题,并查看是否可以改进某些锁定机制
编辑
我试图在没有docker参与的情况下制作一个最小的可复制示例,如下所示:
concurrent = 6
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-git-runner-example-dev"
url = "https://git.example.de/"
token = "xxxxx"
executor = "docker"
[runners.custom_build_dir]
enabled = true
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
image = "ubuntu"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache:/cache", "/var/run/docker.sock:/var/run/docker.sock", "/builds:/builds", "/results:/results", "/var/review-test-deploy/:/var/review-test-deploy/" ]
shm_size = 0
rm */vendor -r ; (cd 1 ; composer2 install; cd .. ) & (cd 2 ; composer2 install; cd .. ) & (cd 3 ; composer2 install; cd .. )
这个错误是不可产生的
我得用容器试试
EDIT2也不能与docker版本的composer/a共享缓存一起复制
sudo rm -r */vendor ; docker run --rm --volume `pwd`/1:/app --volume /tmp/composer-cache:/tmp composer:2.0.11 composer -v install & docker run --rm --volume `pwd`/2:/app --volume /tmp/composer-cache:/tmp composer:2.0.11 composer install & docker run --rm --volume `pwd`/3:/app --volume /tmp/composer-cache:/tmp composer:2.0.11 composer install & docker run --rm --volume `pwd`/4:/app --volume /tmp/composer-cache:/tmp composer:2.0.11 composer install
为什么不使用一个作业来构建应用程序,并根据第一个作业的结果运行下一个测试呢?还有,是什么让你认为这是作曲家的问题?好建议。我只是想了解composer是否能够使用同一缓存目录并行运行多个安装。如果同一服务器上的不同应用程序并行安装,那么问题也可能发生。为什么不为每个应用程序使用不同的目录呢?我不认为这位作曲家是为了支持这样一个案子而创作的是的,我想也是。这个想法是通过使用记录在案的缓存方式来最终节省流量(请参阅),我从未见过这样的问题