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

如何配置GitHub Action在遇到指定错误时自动重试?

你遇到的报错是GitHub公共运行器访问阿里云容器镜像服务的认证接口时网络超时导致的,属于跨网访问的偶发问题,确实无法完全根除,可通过配置工作流自动重试解决,以下是两种可行方案:

方案1:使用GitHub Actions原生重试功能

首先建议你将已经停止维护的docker/build-push-action@v1升级到最新稳定版v5,再给步骤添加重试配置,指定最多重试3次,仅在错误、超时场景下触发重试:

- name: Build image push to aliyun
  uses: docker/build-push-action@v5
  retries: 3
  retry-on:
    - error
    - timeout
  with:
    registry: ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}
    username: ${{ secrets.ALIYUN_DOCKER_REPO_USER_NAME }}
    password: ${{ secrets.ALIYUN_DOCKER_REPO_USER_PASSWORD }}
    tags: ${{ github.sha }}
    repository: reddwarf-pro/dolphin-music
    context: '.'

注意v5版本中原有path参数已更名为context,需要同步调整配置。

方案2:使用重试Action实现带间隔的重试

如果需要在两次重试之间增加等待时间,避免短时间内重复请求仍命中网络故障,可以使用第三方重试Action包裹构建步骤:

- name: Retry build and push docker image
  uses: nick-fields/retry@v2
  with:
    max_attempts: 3
    retry_wait_seconds: 15
    command: |
      echo "${{ secrets.ALIYUN_DOCKER_REPO_USER_PASSWORD }}" | docker login ${{ secrets.ALI_DOCKER_HUB_REGISTRY }} -u ${{ secrets.ALIYUN_DOCKER_REPO_USER_NAME }} --password-stdin
      docker build -t ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}/reddwarf-pro/dolphin-music:${{ github.sha }} .
      docker push ${{ secrets.ALI_DOCKER_HUB_REGISTRY }}/reddwarf-pro/dolphin-music:${{ github.sha }}

这个方案同时使用了--password-stdin传递密码,消除了原有配置中的密码明文警告,安全性更高。

额外优化建议

如果重试后仍频繁出现超时,可以考虑使用国内地域的自托管GitHub Actions运行器,从根源降低跨网访问的失败概率。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:48:02