记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。


kubesphere3.2使用devops流水线进行sonar代码分析


一,环境说明。

1,Centos7+kubesphere3.2+devops组件+Jenkins+Sonarqube.

2,kubesphere最新版本按照官网的说明来安装sonar,会出现无法连接pgsql数据库的问题。

3,可以按此文说明安装 SONAR(micoder.cc),可以正常安装使用。


二,具体步骤。

1,由于安装的sonar-9.2版本,在使用maven时,sonar会出现java版本不对的报错。

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar (default-cli) on project devops-sample: Execution default-cli of goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar failed: An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar: java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy

2,此问题,只知道需要使用jdk11的环境。kubesphere3.2里面自带的maven环境pod使用的是3.5.3,openjdk版本是1.8。

因此jdk的版本太低,就需要升级一下。哪位知道其它方法可以告之下。

3,我这里就升级下maven镜像中的jdk与maven版本,当然也可以直接在base镜像中安装或是只升级jdk。可以将对应版本的JAVA_HOME变量,

添加到mvn的脚本当中。具体流水线配置内容如下:



pipeline {
  agent {
    node {
      label 'maven'
    }


  }
  stages {
    stage('checkout scm') {
      agent none
      steps {
        container('maven') {
          git(url: 'https://gitee.com/micoder/devops-maven-sample.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
        }


      }
    }


    stage('unit test') {
      agent none
      steps {
        container('maven') {
          sh 'mvn clean install'
          sh 'mvn -v'
        }


      }
    }


    stage('sonar') {
      agent none
      steps {
        container('maven') {
          sh 'rpm -e `rpm -qa |grep java-1.8.0-openjdk` --nodeps && yum install -y java-11-openjdk java-11-openjdk-devel'
          sh 'java -version && wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz && tar -zxvf apache-maven-3.8.4-bin.tar.gz -C /opt/ && mv  /opt/apache-maven-3.8.4* /opt/mvn && sed -i \'29i\\ JAVA_HOME=/usr/lib/jvm/java-11-openjdk\' /opt/mvn/bin/mvn && /opt/mvn/bin/mvn -v'
          withCredentials([string(credentialsId : 'sonar-demo' ,variable : 'SONAR_TOKEN' ,)]) {
            withSonarQubeEnv('sonar') {
              sh '/opt/mvn/bin/mvn clean verify sonar:sonar -Dsonar.login=$SONAR_TOKEN'
            }


          }


        }


      }
    }


  }
  environment {
    DOCKER_CREDENTIAL_ID = 'dockerhub-id'
    GITHUB_CREDENTIAL_ID = 'github-id'
    KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
    REGISTRY = 'docker.io'
    DOCKERHUB_NAMESPACE = 'docker_username'
    GITHUB_ACCOUNT = 'kubesphere'
    APP_NAME = 'devops-java-sample'
  }
  parameters {
    string(name: 'TAG_NAME', defaultValue: '', description: '')
  }
}



4,如果只想升级jdk11后,修改自带的maven脚本中的JAVA_HOME变量,具体流水线如下:

    stage('sonar') {
      agent none
      steps {
        container('maven') {
          sh 'rpm -e `rpm -qa |grep java-1.8.0-openjdk` --nodeps && yum install -y java-11-openjdk java-11-openjdk-devel'
          sh 'java -version'
          sh 'sed -i \'29i\\ JAVA_HOME=/usr/lib/jvm/java-11-openjdk\' /opt/apache-maven-3.5.3/bin/mvn && mvn -v'
          withCredentials([string(credentialsId : 'sonar-demo' ,variable : 'SONAR_TOKEN' ,)]) {
            withSonarQubeEnv('sonar') {
              sh 'mvn clean verify sonar:sonar -Dsonar.login=$SONAR_TOKEN'
            }
          }
        }
      }
    }


三,最终实现代码分析结果。



转载请标明出处【kubesphere3.2使用devops流水线进行sonar代码分析】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论