如何缓存Docker文件跨GitHub动作自托管跑者?



我有几个GitHub Actions作业,在自托管的跑步者上使用矩阵。作为其中的一部分,他们需要数据库服务进行测试等。作业定义看起来像这样。

my-test-job:
name: test ${{ matrix.app }}
runs-on: self-hosted
strategy:
fail-fast: false
matrix:
app:
- alpha
- beta
- charlie
...
services:
postgres:
image: postgres:12.8
...
mysql:
image: mysql:5.7
...
redis:
image: redis:5.0
...

我发现的是,所有的Docker层都被拉下与每个矩阵运行。因此,如果我有3个作业,5个矩阵条目,3个服务,每个服务映像需要拉动10个层,那么每次运行都会产生450个拉动请求。这最终导致我达到了Docker Hub的拉力限制。

是否有办法在自托管运行器之间共享Docker缓存,或者在使用自托管运行器的同时更好地构建Docker缓存?

我不确定它是否相关,但自托管的跑步者是使用此模块https://github.com/philips-labs/terraform-aws-github-runner配置的EC2实例。我使用GitHub托管的运行程序(ubuntu-latest)似乎没有遇到这个问题。

谢谢!

考虑到你已经在使用AWS,并且你在Docker Hub上遇到了一个GitHub工作流的速率限制,你可能只是想看看自己托管公共图像。如果您只是在AWS区域内传输数据,那么您可以非常便宜地设置一个可公开访问的AWS Elastic Container Registry实例。您可能还想考虑从Amazon ECR公共图库中提取图像。

最新更新