我有几个GitHub Actions作业在自托管的runner上使用矩阵。作为其中的一部分,它们需要数据库服务来进行测试等。作业定义如下所示。
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的拉限制。
是否有办法在自托管的runner之间共享Docker缓存,或者是否有更好的方法在使用自托管的runner的同时构建Docker缓存?
我不确定这是否相关,但是自托管的runner是使用https://github.com/philips-labs/terraform-aws-github-runner模块配置的EC2示例。我似乎没有在使用GitHub托管的runner(ubuntu-latest)时遇到这个问题。
谢谢你!
1条答案
按热度按时间b5buobof1#
既然你已经在使用AWS,而且你在Docker Hub上只运行一个GitHub工作流就遇到了速率限制,你可能只想自己托管公共图像。如果你只在AWS区域内传输数据,你可以设置一个公共可访问的AWS Elastic Container Registry示例pretty inexpensively。你可能还想考虑从Amazon ECR Public Gallery中提取图像。