无法将Super Linter的SQLFluff错误捕获写入GitHub Issue,求排查
问题分析与修复方案
你的工作流无法将SQLFluff错误写入Issue,主要是以下几个配置遗漏或错误导致的:
1. 错误日志路径错误,且gh run view用法有误
Super-linter开启SAVE_SUPER_LINTER_OUTPUT=true后,错误报告默认生成在${{ github.workspace }}/super-linter-reports目录下,而非你指定的error/super-linter。同时gh run view --log是查看GitHub Actions运行日志的命令,无法读取本地文件。你需要读取本地生成的SQLFluff错误报告,再用gh issue comment写入对应Issue。
修改Log-error-to-the-issue步骤:
- name: Log-error-to-the-issue if: failure() env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} ISSUE_NUMBER: ${{ github.event.issue.number }} REPO: ${{ github.repository }} run: | # 查找SQLFluff的错误报告文件(命名格式通常为sqlfluff-*.txt) ERROR_FILE=$(find ${{ github.workspace }}/super-linter-reports -name "sqlfluff-*.txt") # 找到文件则将内容作为评论添加到Issue if [ -f "$ERROR_FILE" ]; then gh issue comment $ISSUE_NUMBER --repo $REPO --body "### SQLFluff代码检查错误\n\n```\n$(cat $ERROR_FILE)\n```" else gh issue comment $ISSUE_NUMBER --repo $REPO --body "未检测到SQLFluff错误报告" fi
2. 未明确SQLFluff的校验范围与配置
默认情况下Super-linter会校验仓库中所有SQL文件,但如果Issue创建时无关联代码变更,需明确指定校验路径;另外建议配置SQLFluff的专属参数,确保检查规则生效:
- name: Super-linter uses: super-linter/super-linter@v7.2.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VALIDATE_SQLFLUFF: true ENABLE_GITHUB_ACTIONS_STEP_SUMMARY: true SAVE_SUPER_LINTER_OUTPUT: true # 指定SQLFluff配置文件路径(若仓库中有.sqlfluff文件) SQLFLUFF_CONFIG_FILE: .sqlfluff # 可选:限制仅校验SQL文件,避免无关文件干扰 FILTER_REGEX_INCLUDE: ".*\\.sql$"
3. Close步骤命令冗余
你当前Close步骤最后一行的"$ISSUE"属于无效参数,会触发警告,修改为:
- name: Close Issue if: always() # 无论前面步骤是否失败都执行关闭操作 env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} REPO: ${{ github.repository }} ISSUE: ${{ github.event.issue.number }} run: | gh issue close $ISSUE --repo "$REPO" --comment "自动关闭Issue $ISSUE"
4. 可选:调整工作流执行逻辑
若你希望仅在SQLFluff检查失败时才关闭Issue,可将Close步骤的if: always()改为if: failure();若需保留Issue仅写入错误,可直接移除Close步骤。
完整修复后的工作流示例
name: close-issue-after-lint-open on: issues: types: [opened] jobs: close-issue: runs-on: ubuntu-latest permissions: issues: write contents: read packages: read statuses: write steps: - name: Checkout code uses: actions/checkout@v4.2.2 with: fetch-depth: 0 - name: Super-linter uses: super-linter/super-linter@v7.2.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VALIDATE_SQLFLUFF: true ENABLE_GITHUB_ACTIONS_STEP_SUMMARY: true SAVE_SUPER_LINTER_OUTPUT: true SQLFLUFF_CONFIG_FILE: .sqlfluff FILTER_REGEX_INCLUDE: ".*\\.sql$" - name: Log-error-to-the-issue if: failure() env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} ISSUE_NUMBER: ${{ github.event.issue.number }} REPO: ${{ github.repository }} run: | ERROR_FILE=$(find ${{ github.workspace }}/super-linter-reports -name "sqlfluff-*.txt") if [ -f "$ERROR_FILE" ]; then gh issue comment $ISSUE_NUMBER --repo $REPO --body "### SQLFluff代码检查错误\n\n```\n$(cat $ERROR_FILE)\n```" else gh issue comment $ISSUE_NUMBER --repo $REPO --body "SQLFluff检查未生成错误报告,但工作流执行失败" fi - name: Close Issue if: always() env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} REPO: ${{ github.repository }} ISSUE: ${{ github.event.issue.number }} run: | gh issue close $ISSUE --repo "$REPO" --comment "自动关闭Issue $ISSUE"
内容的提问来源于stack exchange,提问作者biggboss2019
相关产品推荐
相关产品推荐

