如何在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
相关产品推荐
相关产品推荐

