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

GitHub可重用工作流兼容workflow_call与手动触发的Secrets配置

问题解答

1. 是否可以同时使用workflow_dispatch和workflow_call?

可以,GitHub Actions完全支持在同一个工作流中同时配置这两种触发事件,二者互不冲突。

2. 手动触发时访问Secrets的问题分析与解决

你遇到的Error: Input required and not supplied: token错误,核心原因是两种触发场景下secrets.PAT_GITHUB的来源不同:

  • 当通过workflow_call调用时,secrets.PAT_GITHUB是由调用方工作流传递的参数,符合你定义的workflow_call.secrets要求;
  • 当手动触发(workflow_dispatch)时,没有调用方传递这个参数,此时secrets.PAT_GITHUB指向的是当前工作流所在仓库的同名Secret——如果该仓库没有配置这个Secret,就会出现参数缺失的错误。

你提到的另一个主工作流能正常访问Secrets,是因为它直接运行在自身仓库中,仓库的Secrets可以直接被引用,不需要依赖外部传入。

解决方案

修改工作流代码,通过github.event_name区分触发来源,为不同场景提供对应的token值:

name: unit-tests

on:
  workflow_dispatch:
  workflow_call:
    secrets:
      PAT_GITHUB:
        required: true
jobs:
  update-checker:
    runs-on: ubuntu-latest
    steps:
      - name: "Check out this repo and submodules."
        uses: actions/checkout@v3
        with:
          submodules: true
          # workflow_call触发时使用传入的secret,手动触发时优先用仓库自身的PAT_GITHUB, fallback到默认GITHUB_TOKEN
          token: ${{ github.event_name == 'workflow_call' && secrets.PAT_GITHUB || secrets.PAT_GITHUB || github.token }}
        timeout-minutes: 3

另外,确保当前工作流所在仓库已配置PAT_GITHUB这个Secret(如果需要在手动触发时使用它),或者直接使用默认的github.token(适用于子模块与主仓库同属一个组织/账号的场景)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:43:40