如何让Super Linter检查分支所有提交文件而非仅最新提交?
解决Super Linter仅检查最新提交文件的问题
修改后的Workflow配置
name: Super Linter Java Check on: [push] jobs: lint: runs-on: ubuntu-latest steps: # 拉取完整代码仓库历史 - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 # 获取当前分支相对于默认分支的所有变更文件 - name: Fetch all changed files in branch id: get-changed-files run: | # 对比默认分支与当前分支的所有提交差异,提取变更文件列表 CHANGED_FILES=$(git diff --name-only origin/${{ env.DEFAULT_BRANCH }}...HEAD) # 将换行分隔转为逗号分隔格式,适配Super Linter的FILES_TO_LINT参数 echo "files_to_lint=$(echo "$CHANGED_FILES" | tr '\n' ',' | sed 's/,$//')" >> $GITHUB_OUTPUT # 运行Super Linter检查所有变更文件 - name: Run Super Linter uses: super-linter/super-linter@v7.1.0 env: VALIDATE_ALL_CODEBASE: false VALIDATE_JAVA: true DEFAULT_BRANCH: master # 替换为你的仓库默认分支 FILES_TO_LINT: ${{ steps.get-changed-files.outputs.files_to_lint }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
关键修改说明
- 新增
Fetch all changed files in branch步骤:通过git diff --name-only origin/master...HEAD获取当前分支相对于默认分支的所有提交变更文件(三点语法会对比默认分支到当前分支的完整提交链差异)。 - 将变更文件列表转为逗号分隔格式:Super Linter的
FILES_TO_LINT环境变量接受逗号分隔的文件路径,因此用tr和sed做格式转换。 - 传递文件列表给Super Linter:通过步骤输出变量
files_to_lint将所有变更文件传入,替代默认的仅检查最后一次提交文件的逻辑。
内容的提问来源于stack exchange,提问作者Deepak Khandelwal
相关产品推荐
相关产品推荐

