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

已定义GitHub Vars/Secrets但CI工作流无法识别,Docker镜像推送失败

GitHub Actions无法读取环境中配置的Vars和Secrets的解决方法

问题背景

已在GitHub仓库的特定环境中配置了DOCKERHUB_USERNAME(仓库变量)和DOCKERHUB_TOKEN(仓库密钥),但执行CI工作流时,检查步骤显示这两个变量均未被识别,导致工作流执行失败。

工作流代码

name: CI Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
permissions:
  contents: read
jobs:
  docker:
    name: Docker Build & Push
    runs-on: ubuntu-latest
    steps:
      - name: Check secrets availability
        run: |
          echo "🔍 Checking secrets..."
          if [ -z "${{ vars.DOCKERHUB_USERNAME }}" ]; then
            echo "❌ DOCKERHUB_USERNAME is not set"
          else
            echo "✅ DOCKERHUB_USERNAME is available"
          fi
          if [ -z "${{ secrets.DOCKERHUB_TOKEN }}" ]; then
            echo "❌ DOCKERHUB_TOKEN is not set"
          else
            echo "✅ DOCKERHUB_TOKEN is available"
          fi

执行结果

🔍 Checking secrets...
❌ DOCKERHUB_USERNAME is not set
❌ DOCKERHUB_TOKEN is not set
Error: Process completed with exit code 1.

环境配置截图

环境列表界面
环境配置界面

问题原因

你将DOCKERHUB_USERNAME和DOCKERHUB_TOKEN配置在了仓库的特定环境中,但工作流的job并未指定使用该环境,导致GitHub Actions无法加载对应环境下的变量和密钥。

解决方案

在工作流的docker job中添加environment字段,指定你配置变量的环境名称(需与GitHub中设置的环境名完全一致,区分大小写)。

修改后的工作流代码

name: CI Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
permissions:
  contents: read
jobs:
  docker:
    name: Docker Build & Push
    runs-on: ubuntu-latest
    # 指定配置了变量的环境名称,替换为你实际的环境名
    environment: production
    steps:
      - name: Check secrets availability
        run: |
          echo "🔍 Checking secrets..."
          if [ -z "${{ vars.DOCKERHUB_USERNAME }}" ]; then
            echo "❌ DOCKERHUB_USERNAME is not set"
          else
            echo "✅ DOCKERHUB_USERNAME is available"
          fi
          if [ -z "${{ secrets.DOCKERHUB_TOKEN }}" ]; then
            echo "❌ DOCKERHUB_TOKEN is not set"
          else
            echo "✅ DOCKERHUB_TOKEN is available"
          fi

额外说明

  1. 若你的变量是在仓库全局(而非环境级)配置的,则无需添加environment字段
  2. 若工作流由pull_request触发,且目标环境设置了保护规则(如必需审批),则需要先完成审批才能访问环境中的密钥
  3. 确保环境名称拼写完全匹配,大小写敏感

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:14:52