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

如何为GitHub Actions工作流文件设置自定义非根目录路径?

GitHub Actions工作流能否放在非根目录的.github/workflows?

不行,GitHub Actions只会自动扫描仓库根目录下的.github/workflows目录来加载工作流文件。你放在/foo/bar/.github/workflows/里的文件不会被平台识别,这就是你创建后未生效的原因。

不过可以通过以下两种方式实现类似需求:

1. 用工作流调用(Workflow Call)复用子目录逻辑

你可以在根目录的.github/workflows下创建一个触发用的工作流,然后让它调用子目录中存放的工作流文件(注意子目录里的文件不能放在.github/workflows下,要换个路径,比如/foo/bar/workflows/)。

步骤示例:

  • 根目录创建触发工作流.github/workflows/trigger.yml:

    name: 触发子目录工作流
    on: [push, pull_request] # 设置你的触发条件
    
    jobs:
      call-sub-workflow:
        uses: ./foo/bar/workflows
        # 可选:传递参数或密钥
        # with:
        #   build-environment: production
        # secrets:
        #   api-token: ${{ secrets.API_TOKEN }}
    
  • 子目录创建可被调用的工作流/foo/bar/workflows/action.yml:

    name: 子目录工作流
    on:
      workflow_call:
        # 可选:定义接收的参数和密钥
        # inputs:
        #   build-environment:
        #     type: string
        # secrets:
        #   api-token:
        #     required: false
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: 执行子目录逻辑
            run: echo "从子目录工作流执行任务"
    

2. 用复合动作(Composite Action)封装子目录逻辑

如果你的逻辑是可复用的步骤集合,可以把它封装成复合动作,存放在子目录中,然后在根目录的工作流里调用这个动作。

步骤示例:

  • 子目录创建复合动作/foo/bar/actions/my-custom-action/action.yml:

    name: '自定义复合动作'
    description: '封装子目录中的执行逻辑'
    runs:
      using: "composite"
      steps:
        - name: 执行子目录脚本
          run: ./foo/bar/scripts/my-task.sh
          shell: bash
    
  • 根目录工作流调用该动作.github/workflows/main.yml:

    name: 主工作流
    on: [push]
    
    jobs:
      run-custom-action:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - uses: ./foo/bar/actions/my-custom-action
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:32:46