基于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/**
关键修改说明:
- 修正矩阵路径:移除了
folder1/dotnet前的多余斜杠,确保路径与仓库实际结构匹配,避免工作目录切换失败。 - 限制MegaLinter扫描范围:通过
MEGALINTER_FILES_TO_LINT: "./**"指定仅扫描当前工作目录下的所有文件,阻止工具遍历整个仓库。 - 隔离报告文件:设置
MEGALINTER_REPORTS_FOLDER为当前工作目录下的文件夹,同时修改上传路径为对应目录的报告,避免多个矩阵任务的报告互相覆盖,且方便后续区分不同目录的检查结果。
内容的提问来源于stack exchange,提问作者Dilmurod Makhamadaliev
相关产品推荐
相关产品推荐

