Docker Publish / build-and-push (push) Canceled after 0s
GitHub Actions 拒绝加载本 workflow, 报:
Invalid workflow file: .github/workflows/docker.yml#L1
(Line: 49, Col: 13): Unrecognized named-value: 'secrets'.
Located at position 40 within expression:
github.event_name != 'pull_request' && secrets.DOCKERHUB_USERNAME != ''
原因: secrets 上下文不允许在 step 的 if: 表达式里引用(GitHub 沙箱限制)。
secrets 只在 with: / env: / run: 等位置可用, if: 里必须走 env 中转。
修复:
- 新增 job 级 env: DOCKERHUB_USERNAME / DOCKERHUB_TOKEN (值来自 secrets)
- DockerHub login step: if 改 env.DOCKERHUB_USERNAME != ''
- DockerHub login step: username/password 改读 env.*
- metadata-action images: DockerHub 那行改 env.DOCKERHUB_USERNAME,
enable 判断同样改 env 上下文
副作用: 无。secret 未配置时行为不变(跳过 login + 不渲染 DockerHub image)。
已用 js-yaml 校验 YAML 结构合法, 并扫描确认全部 step 的 if: 不含 secrets 引用。