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

如何将GitHub Workflow的Run命令抽离为可复用本地Action?

正确实现将Run命令抽离为本地Composite Action的方法

问题根源分析

  1. 第一次错误:

    • 本地Action引用路径错误(多写了一个./),导致GitHub无法定位到正确的action.yml文件。
    • 初始的action.yml未遵循Composite Action的格式规范,缺少runs.using: composite核心定义。
  2. 第二次错误:

    • YAML缩进格式混乱,using和run未正确嵌套在runs节点下。
    • Composite Action不支持直接在runs下写run命令,必须通过steps数组定义具体执行步骤。

正确实现步骤

1. 创建符合规范的本地Composite Action文件

在仓库的.github/actions/md-lint/目录下创建action.yml,内容如下:

# .github/actions/md-lint/action.yml
name: 'Markdown 格式检查'
description: '使用markdownlint-cli批量检查Markdown文件格式'
runs:
  using: 'composite'
  steps:
    - name: 执行markdownlint检查
      run: |
        npx markdownlint-cli '**/*.md' \
        --config '.github/workflows/.markdownlint.json' \
        --ignore '.github/CONTRIBUTING.md' \
        --ignore '.github/CODE_OF_CONDUCT.md' \
        --ignore 'CHANGELOG.md'
      shell: bash

关键注意点:

  • YAML缩进必须统一(建议用2个空格),确保using和steps都正确嵌套在runs节点下。
  • Composite Action的执行命令必须放在steps数组的步骤中,同时明确指定shell类型。
  • 配置文件路径保持与原Workflow一致,因为Action运行时的工作目录为仓库根目录。

2. 在Workflow中正确引用本地Action

修改.github/workflows/markdown-lint.yml中的对应步骤,替换为:

- name: Lint Markdown files
  uses: ./.github/actions/md-lint

也可简化为:

- name: Lint Markdown files
  uses: .github/actions/md-lint

关键注意点:

  • 引用路径从仓库根目录开始,无需多余的./前缀。
  • 确保Workflow中已包含actions/checkout@v4步骤(你的原Workflow已具备),否则GitHub无法拉取仓库中的本地Action文件。

验证运行

提交修改后的文件到仓库的main或develop分支,触发Workflow后即可正常执行Markdown格式检查,不会再出现路径或格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:22:03