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

GitHub Actions无法访问Secrets:Docker Hub登录失败求助

GitHub Actions合并PR后发布Docker镜像遇登录错误排查

我配置了GitHub Actions,用于Pull Request合并到dev分支后发布“nightly” Docker镜像。当前“Login to Docker Hub”步骤持续报错:Error: Username and password required。我仅修改了触发器和作业条件,不确定是否因此引发问题。想问问当触发器为如下配置时,Secrets是否可能无法正常访问?

on:
  pull_request:
    types:
      - closed
    branches:
      - dev

昨天所有流程正常运行,且Docker Hub令牌最后一次使用时间为“2024年2月28日 11:29:25”,完整工作流文件如下:

name: Publish Docker nightly image

on:
  pull_request:
    types:
      - closed
    branches:
      - dev

jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    if: github.repository == 'OpenHausIO/backend' && github.event.pull_request.merged == true
    steps:
      - name: Check out the repo
        uses: actions/checkout@v4

      - name: Use Node.js 18.x
        uses: actions/setup-node@v4
        with:
          node-version: 18.x
      - run: npm ci
      - run: npm run build  
      
      - name: Log in to Docker Hub
        uses: docker/login-action@v3.0.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      
      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@v5.5.0
        with:
          images: openhaus/backend
      
      - name: Build and push Docker image
        uses: docker/build-push-action@v5.1.0
        with:
          context: .
          file: ./Dockerfile
          push: true
          tags:  openhaus/backend:nightly
          labels: ${{ steps.meta.outputs.labels }}

问题分析与排查方向

你的pull_request closed触发器完全支持访问仓库Secrets,所以触发器配置本身不会导致Secrets无法读取。报错Username and password required,优先排查以下几点:

  • Secrets配置正确性:进入仓库的「Settings → Secrets and variables → Actions」,确认DOCKERHUB_USERNAME和DOCKERHUB_TOKEN这两个Secrets存在,且拼写完全一致(注意大小写敏感)。
  • 令牌有效性:即便令牌最后使用时间显示为2月28日,仍可能存在令牌被手动撤销、权限变更或过期的情况,建议重新生成Docker Hub令牌并更新到GitHub Secrets中。
  • 作业条件验证:确认触发流程的PR确实是「合并」状态(而非单纯关闭),因为你的作业条件包含github.event.pull_request.merged == true,如果PR未合并作业不会执行,但你已经触发报错说明这条条件是满足的,可暂时排除。
  • Secrets作用域:如果是组织下属仓库,要确认Secrets是配置在仓库级别还是组织级别,组织级Secrets需要确保当前仓库被授权访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:03:29