1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

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

功能介绍

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

  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 检查代码规范:成功

上一篇图形化编辑器可用步骤说明
最近更新
感谢反馈有用
感谢反馈没用