kubesphere3.2使用devops流水线进行sonar代码分析 |
发表者:admin分类:云计算容器2022-01-21 09:24:38 阅读[874] |
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》
虚拟化云计算,系统运维,安全技术服务.
Tags: | [阅读全文...] |
最新评论