如何在GitHub操作中跨自托管的runner缓存Docker文件?

xdnvmnnf  于 2022-11-22  发布在  Docker
关注(0)|答案(1)|浏览(155)

我有几个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)时遇到这个问题。
谢谢你!

b5buobof

b5buobof1#

既然你已经在使用AWS,而且你在Docker Hub上只运行一个GitHub工作流就遇到了速率限制,你可能只想自己托管公共图像。如果你只在AWS区域内传输数据,你可以设置一个公共可访问的AWS Elastic Container Registry示例pretty inexpensively。你可能还想考虑从Amazon ECR Public Gallery中提取图像。

相关问题