如何在Azure DevOps/GitHub流水线YAML中统一定义文件列表避免重复
GitHub Actions 触发路径复用解决方案
变量引用失效原因
GitHub Actions 的变量插值语法${{ variables.xxx }}仅在jobs配置段及内部生效,on触发条件字段的解析优先级高于变量解析,因此无法通过变量实现路径列表复用。
可行方案:使用YAML原生锚点别名语法
YAML内置的锚点(&)和别名(*)语法不依赖GitHub Actions的变量能力,可在任意配置段实现内容复用,适配on字段的解析规则。
完整配置示例
name: Build # 提前定义复用的路径列表,&后为自定义锚点名称 x-src-paths: &src_paths - 'SRC/define.inc' - 'SRC/SrvMain.pas' - 'SRC/Tiny.dpr' - 'SRC/xBase.pas' on: push: branches: [ master ] paths: *src_paths # 直接引用锚点对应的路径列表 pull_request: branches: [ master ] paths: *src_paths # 复用相同路径列表,无需重复编写 workflow_dispatch: jobs: # 剩余内容省略
扩展说明
如果需要在某一触发条件下额外新增路径,可通过流式数组写法实现合并,避免生成二维数组:
pull_request: branches: [ master ] paths: [ *src_paths, '.github/workflows/build.yml' ] # 复用原有路径+新增工作流文件路径
内容的提问来源于stack exchange,提问作者Maxim Masiutin
相关产品推荐
相关产品推荐

