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

基于GitHub Actions实现指定文件夹推送时的MegaLinter检查

GitHub Actions工作流优化:仅指定文件夹代码检查

你的工作流之所以会扫描整个仓库,核心原因是MegaLinter默认会遍历整个仓库的文件,即便指定了working-directory,它还是会从仓库根目录开始扫描。要实现仅检查目标文件夹,需要调整MegaLinter的配置,同时修正路径相关的细节问题。

以下是修正后的工作流代码:

name: pr_dotnet

on:
  push:
    paths:
      - "folder1/dotnet/**"
      - "folder2/dotnet/**"

jobs:
  lint:
    name: Lint dotnet specific folders
    runs-on: ubuntu-latest
    strategy:
      matrix: { dir: ['folder1/dotnet', 'folder2/dotnet'] }

    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}

      - name: MegaLinter 
        uses: oxsecurity/megalinter/flavors/dotnet@v6.12.0
        working-directory: ${{ matrix.dir }}
        env:
          # 仅扫描当前工作目录下的所有文件
          MEGALINTER_FILES_TO_LINT: "./**"
          # 将报告生成在当前工作目录的megalinter-reports文件夹中,避免任务间覆盖
          MEGALINTER_REPORTS_FOLDER: "./megalinter-reports"

      - name: Archive linted artifacts
        if: success() || failure()
        uses: actions/upload-artifact@v2
        with:
          # 给每个目录的报告设置唯一名称,方便区分
          name: MegaLinter reports - ${{ matrix.dir }}
          path: ${{ matrix.dir }}/megalinter-reports/**

关键修改说明:

  1. 修正矩阵路径:移除了folder1/dotnet前的多余斜杠,确保路径与仓库实际结构匹配,避免工作目录切换失败。
  2. 限制MegaLinter扫描范围:通过MEGALINTER_FILES_TO_LINT: "./**"指定仅扫描当前工作目录下的所有文件,阻止工具遍历整个仓库。
  3. 隔离报告文件:设置MEGALINTER_REPORTS_FOLDER为当前工作目录下的文件夹,同时修改上传路径为对应目录的报告,避免多个矩阵任务的报告互相覆盖,且方便后续区分不同目录的检查结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:02:21