You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Action执行Sonar扫描前遭遇Docker拉取速率限制错误

解决GitHub Action中SonarQube镜像未认证拉取速率限制问题

问题核心

你定义的Docker登录步骤执行前,SonarQube扫描动作的容器构建阶段会自动拉取sonarsource/sonar-scanner-cli:10.0镜像,此时还未完成Docker Hub认证,触发未认证用户的拉取速率限制(返回429错误)。

可行解决方案

1. 在自托管Runner上提前配置Docker Hub认证

你的Job运行在自托管Runner ros-devops-runners上,直接在Runner机器上完成Docker Hub登录,后续所有镜像拉取都会使用认证状态:

  • 在Runner机器上执行命令:
    docker login -u YOUR_DOCKERHUB_USERNAME -p YOUR_DOCKERHUB_TOKEN
    
    登录状态会持久化,后续GitHub Action的所有Docker操作都会复用这个认证。

2. 利用GitHub缓存跳过镜像拉取

使用actions/cache缓存已拉取的Sonar Scanner镜像,避免重复从Docker Hub拉取:
修改你的Job步骤,在登录后添加缓存步骤:

jobs:
  security-scans:
    name: Security Scans
    runs-on: ros-devops-runners
    timeout-minutes: 20
    steps:
      - name: 1. Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      
      - name: 2. Cache Sonar Scanner image
        uses: actions/cache@v3
        id: cache-sonar-image
        with:
          path: /var/lib/docker/images
          key: ${{ runner.os }}-docker-sonar-scanner-10.0
      
      - name: 3. Pull Sonar Scanner CLI image (if not cached)
        if: steps.cache-sonar-image.outputs.cache-hit != 'true'
        run: docker pull sonarsource/sonar-scanner-cli:10.0
      
      # 后续添加你的SonarQube扫描步骤
      - name: 4. Run SonarQube Scan
        uses: sonarsource/sonar-scanner-cli-action@v2
        # 你的扫描配置...

注意:缓存Docker镜像的路径可能因Runner的Docker存储驱动不同有所调整,如果/var/lib/docker/images不生效,可以尝试/var/lib/docker/overlay2(overlay2驱动下)。

3. 强制Sonar Action使用已登录的Docker上下文

如果使用的Sonar Action支持指定已拉取的镜像,直接引用本地已拉取的镜像,避免Action重新拉取:
比如在Sonar扫描步骤中指定image参数(以sonarsource/sonar-scanner-cli-action为例):

- name: Run SonarQube Scan
  uses: sonarsource/sonar-scanner-cli-action@v2
  with:
    image: sonarsource/sonar-scanner-cli:10.0
    # 其他扫描参数...

这样Action会直接使用本地已拉取的镜像,不会再从Docker Hub拉取。

内容的提问来源于stack exchange,提问作者Akshay Vijay Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:45:02