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

如何在GitHub Actions中仅处理修改后的.md格式文件

仅处理变更的.md文件的GitHub Actions工作流修改方案

要实现只处理新增、修改或删除的.md后缀文件,你需要对现有工作流做两处核心修改,同时修复原有脚本的语法错误:

1. 在获取变更文件时直接筛选.md文件

修改Get changes步骤的git diff命令,通过grep过滤出仅以.md结尾的文件,同时修复if语句的语法缺失(原代码缺少then):

- name: Get changes
  id: changed-files
  run: |
    if ${{ github.event_name == 'pull_request' }}; then
      echo "changed_files=$(git diff --name-only -r HEAD^1 HEAD | grep '\.md$' | xargs)" >> $GITHUB_OUTPUT
    else
      echo "changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep '\.md$' | xargs)" >> $GITHUB_OUTPUT
    fi

2. 循环处理时增加二次校验(双重保险)

在Run autodocu update步骤的循环中,增加文件后缀判断,确保只有.md文件才会被传入脚本处理:

- name: Run autodocu update
  run: |
    for file in ${{ steps.changed-files.outputs.changed_files }}; do
      if [[ "$file" == *.md ]]; then
        python important.py "$file"
      fi
    done

注:如果你的important.py需要接收文件路径作为参数,记得加上"$file"传递给脚本,这样脚本就能知道具体处理哪个文件。

修改后的完整工作流

on:
  push:
    branches:
    - main
    paths:
    - Example/** 

jobs:
  updatepages:
    runs-on: [self-hosted, linux]

    defaults:
      run:
        working-directory: ./automation/
        
    permissions:
      contents: read
      id-token: write
      pull-requests: write
    
    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }}
        
    - name: Get changes
      id: changed-files
      run: |
        if ${{ github.event_name == 'pull_request' }}; then
          echo "changed_files=$(git diff --name-only -r HEAD^1 HEAD | grep '\.md$' | xargs)" >> $GITHUB_OUTPUT
        else
          echo "changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep '\.md$' | xargs)" >> $GITHUB_OUTPUT
        fi
     
    - name: Setup Python
      uses: actions/setup-python@v4
      with:
        python-version: 3.x

    - name: dependencies
      run: |
        pip install requests flask md2cf mistune

    - name: Run autodocu update
      run: |
        for file in ${{ steps.changed-files.outputs.changed_files }}; do
          if [[ "$file" == *.md ]]; then
            python important.py "$file"
          fi
        done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:12:54