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

如何在GitHub可复用工作流中覆盖继承的指定密钥?

实现方法

可以实现,但你当前的写法不符合GitHub Actions的语法规范,正确的配置方式如下:

1. 调整可复用工作流C的定义

首先要在workflow_call中声明所有需要接收的密钥(包括要被覆盖的那个),这样调用方才能正确传递和覆盖:

name: Reusable workflow
on:
  workflow_call:
    inputs:
      ... # 保留原有的输入定义
    secrets:
      SECRET_1:
        required: true
      SECRET_2:
        required: true
      ... # 依次声明SECRET_3到SECRET_99
      SECRET_100:
        required: true

jobs:
  your-job:
    runs-on: ubuntu-latest
    env:
      # 直接使用传递过来的密钥
      SECRET_1: ${{ secrets.SECRET_1 }}
      SECRET_2: ${{ secrets.SECRET_2 }}
      ...
      SECRET_100: ${{ secrets.SECRET_100 }}
    steps:
      ... # 原有的步骤逻辑

2. 工作流A的正确调用写法

调用时使用inherit: true继承所有可继承的密钥,同时单独指定要覆盖的SECRET_100:

name: Workflow A
on: ["workflow_dispatch"]

jobs:
  call-C:
    uses: ./.github/workflows/C.yaml
    secrets:
      inherit: true
      SECRET_100: ${{ secrets.SECRET_100_FOR_A }}
  ... # 其他任务

3. 工作流B的正确调用写法

和A类似,仅替换对应的密钥值:

name: Workflow B
on: ["workflow_dispatch"]

jobs:
  call-C:
    uses: ./.github/workflows/C.yaml
    secrets:
      inherit: true
      SECRET_100: ${{ secrets.SECRET_100_FOR_B }}
  ... # 其他任务

关键说明

  • 必须在可复用工作流的workflow_call.secrets里声明所有需要的密钥,否则调用方无法传递或继承。
  • secrets: { inherit: true, KEY: VALUE }是正确的语法,数组形式(- inherit)不符合规范。
  • 当同时使用inherit: true和单独指定密钥时,指定的密钥会覆盖继承来的同名密钥,其他密钥保持继承状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:45:38