持续集成增量检查代码规范

功能介绍

代码合并请求触发持续集成,可获得这次变化的文件,进行「增量检查」。

  1. 在「触发规则」中开启「创建合并请求时触发构建」;

创建合并请求时触发构建

  1. 使用下述 Jenkinsfile:拉取「目标分支」和「当前分支」,进行对比;

Jenkinsfile

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([
          $class: 'GitSCM',
          branches: [[name: '*']],
          userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
        ])
        script {
          if ( env.MR_SOURCE_BRANCH ==~ /.*/ ) {
            sh "git checkout ${env.MR_TARGET_BRANCH}"
            sh "git checkout ${env.MR_SOURCE_BRANCH}"
          } else {
            sh "git checkout ${env.GIT_COMMIT}"
          }
        }
      }
    }
    stage('安装依赖') {
      steps {
        sh 'npm install -g lint-md-cli'
      }
    }
    stage('增量检查代码规范') {
      when {
        expression { env.MR_SOURCE_BRANCH ==~ /.*/ }
      }
      steps {
        sh "git diff --diff-filter=d --name-only ${env.MR_TARGET_BRANCH}... | xargs lint-md"
      }
    }
  }
}

常见问题

Q: Jenkins 报错

git diff --diff-filter=ACM --name-only master...

fatal: ambiguous argument ‘master…’: unknown revision or path not in the working tree.

A: Jenkins 默认只拉取当前分支代码,不拉取其他分支,所以对比分支会报错。按照上文代码,拉取多个分支即可。

运行结果截图

CODING CI 阻止代码合并请求

CODING CI 检查代码规范:失败

CODING CI 成功,代码可以合并

CODING CI 检查代码规范:成功

上一篇图形化编辑器可用步骤说明
文档是否对您有用?
感谢反馈有用
感谢反馈没用