在Jenkins中记录 shell 检查结果

vnzz0bqm  于 2022-11-21  发布在  Jenkins
关注(0)|答案(2)|浏览(190)

我正在寻找一种方法来记录我的Jenkins Pipeline脚本中shellcheck的违规结果。到目前为止我还没有找到任何结果。对于其他工具(Java、Python),我使用的是Warnings Next Generation,但它似乎不支持shellcheck,我想在Jenkins Job控制面板中显示违规情况。有人有这样的经验吗?或者是一个准备好使用的自定义工具警告NG?

lstz6jyr

lstz6jyr1#

我 自己 确实 找到 了 一 个 可行 的 解决 方案 。 就 像 评论 中 建议 的 那样 , 拼写 检查 提供 了 checkstyle 格式 , 可以 用 Warnings NG 解析 和 可视化 。 下面 的 管道 阶段 定义 工作 得 很 好 。

stage('Analyze') {
    steps {
        catchError(buildResult: 'SUCCESS') {
            sh """#!/bin/bash
                # The null command `:` only returns exit code 0 to ensure following task executions.
                shellcheck -f checkstyle *.sh > shellcheck.xml || :
            """
            recordIssues(tools: [checkStyle(pattern: 'shellcheck.xml')])
        }
    }
}

中 的 每 一 个
运行 该 构建 将 生成 一 个 如下 所 示 的 趋势 图 。

rslzwgfq

rslzwgfq2#

在我的例子中,对所有文件运行shellcheck并将输出合并到一个xml文件中,并不能很好地处理recordIssues。
我已经为每个源文件创建了单独报告以使其正常工作。

stage('Shellcheck') {
  steps {
    catchError(
        buildResult: hudson.model.Result.SUCCESS.toString(),
        stageResult: hudson.model.Result.UNSTABLE.toString(),
        message: "shellcheck error detected, but allowing job to continue!")
    {
      sh '''
        # shellcheck with all files in single xml doesnt play well with jenkins report
        ret=0
        for file in $(grep -rl '^#!/.*/bash' src); do
          echo shellcheck ${file}
          mkdir -p .checkstyle/${file}/
          shellcheck -f checkstyle ${file} > .checkstyle/${file}/shellcheck.xml || (( ret+=$? ))
        done
        exit ${ret}
      '''
    }//catchError
  }//steps
  post {
    always {
      recordIssues(tools: [checkStyle(pattern: '.checkstyle/**/shellcheck.xml')])
    }
  }//post
}//stage

相关问题