mirror of
https://github.com/mc1arke/sonarqube-community-branch-plugin.git
synced 2024-11-24 08:42:28 +02:00
0f5fbd8894
Sonarqube 10 has removed legacy support for modules as well as removing deprecated properties historically used for specifying branch targets. Additionally, the interface for managing Sonarqube features has had a method renamed, which makes the new version of Sonarqube binary incompatible with the plugin. The references to Sonarqube's removed code have been removed from the plugin, and the implementations of the interface and Java agent that dynamically updates Sonarqube code that also implements the interface have been updated to use the new method name. As the Sonarqube server binaries are now compiled against Java 17, the build process has been bumped to JDK 17, but continues to produce Java 11 artefacts to allow scanner components to be compatible with the ongoing Java 11 support in the scanner.
157 lines
4.8 KiB
Groovy
157 lines
4.8 KiB
Groovy
/*
|
|
* Copyright (C) 2020-2023 Michael Clarke
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
plugins {
|
|
id('java')
|
|
id('jacoco')
|
|
id('org.sonarqube') version('2.8')
|
|
id('info.solidsoft.pitest') version('1.4.0')
|
|
id('com.github.johnrengelman.shadow') version('5.1.0')
|
|
id('net.researchgate.release') version('2.6.0')
|
|
}
|
|
|
|
group 'com.github.mc1arke.sonarqube.plugin'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
ivy {
|
|
url 'https://binaries.sonarsource.com/'
|
|
patternLayout({a ->
|
|
artifact '/Distribution/[module]/[module]-[revision].[ext]'
|
|
})
|
|
metadataSources(sources -> {
|
|
sources.artifact()
|
|
})
|
|
}
|
|
}
|
|
|
|
def sonarqubeVersion = '10.0.0.68432'
|
|
def sonarqubeLibDir = "${projectDir}/sonarqube-lib"
|
|
def sonarLibraries = "${sonarqubeLibDir}/sonarqube-${sonarqubeVersion}/lib"
|
|
|
|
sourceCompatibility = JavaVersion.VERSION_11
|
|
targetCompatibility = JavaVersion.VERSION_11
|
|
configurations {
|
|
zip
|
|
}
|
|
|
|
compileJava {
|
|
options.compilerArgs += '-proc:none'
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
tasks.withType(JavaCompile) {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
|
|
dependencies {
|
|
compileOnly(fileTree(dir: sonarLibraries, include: '**/*.jar', exclude: 'extensions/*.jar'))
|
|
testImplementation(fileTree(dir: sonarLibraries, include: '**/*.jar', exclude: 'extensions/*.jar'))
|
|
testImplementation('org.mockito:mockito-core:5.4.0')
|
|
testImplementation('org.assertj:assertj-core:3.24.2')
|
|
testImplementation('com.github.tomakehurst:wiremock:2.27.2')
|
|
zip("sonarqube:sonarqube:${sonarqubeVersion}@zip")
|
|
implementation('org.bouncycastle:bcpkix-jdk15on:1.70')
|
|
implementation(files('lib/nodes-0.5.0.jar'))
|
|
runtimeOnly('com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2')
|
|
compileOnly('com.google.code.findbugs:jsr305:3.0.2')
|
|
implementation('org.javassist:javassist:3.29.2-GA')
|
|
implementation('com.squareup.okhttp3:logging-interceptor:4.11.0')
|
|
testImplementation(platform('org.junit:junit-bom:5.10.0'))
|
|
testImplementation('org.junit.jupiter:junit-jupiter')
|
|
testImplementation('junit:junit:4.13.2')
|
|
testRuntimeOnly('org.junit.vintage:junit-vintage-engine')
|
|
}
|
|
|
|
|
|
project.afterEvaluate {
|
|
if (file("${sonarLibraries}").exists()) {
|
|
return
|
|
}
|
|
project.getLogger().lifecycle('Extracting SonarQube libraries (this may take a while)...')
|
|
configurations.zip.resolvedConfiguration.resolvedArtifacts.each { artifact ->
|
|
copy {
|
|
from zipTree(artifact.getFile())
|
|
into sonarqubeLibDir
|
|
}
|
|
}
|
|
}
|
|
|
|
jar {
|
|
manifest {
|
|
attributes 'Plugin-Description': 'Enables branch and pull request analysis in SonarQube Community Edition, without having to upgrade to Developer Edition',
|
|
'SonarLint-Supported': false,
|
|
'Plugin-Homepage': 'https://github.com/mc1arke/sonarqube-community-branch-plugin',
|
|
'Plugin-License': 'GNU LGPL 3',
|
|
'Plugin-Version': "${project.version}",
|
|
'Plugin-Organization': 'Michael Clarke',
|
|
'Sonar-Version': "9.14.0.375",
|
|
'Plugin-IssueTrackerUrl': 'https://github.com/mc1arke/sonarqube-community-branch-plugin/issues',
|
|
'Plugin-Key': 'communityBranchPlugin',
|
|
'Plugin-Class': 'com.github.mc1arke.sonarqube.plugin.CommunityBranchPluginBootstrap',
|
|
'Plugin-Name': 'Community Branch Plugin',
|
|
'Premain-Class': 'com.github.mc1arke.sonarqube.plugin.CommunityBranchAgent',
|
|
'Can-Retransform-Classes': 'true'
|
|
}
|
|
}
|
|
|
|
release {
|
|
git {
|
|
requireBranch = ''
|
|
commitVersionFileOnly = true
|
|
}
|
|
}
|
|
|
|
tasks.jar.configure {
|
|
classifier = 'nodeps'
|
|
enabled = false
|
|
}
|
|
|
|
tasks.shadowJar.configure {
|
|
classifier = null
|
|
}
|
|
|
|
tasks.withType(JavaCompile) {
|
|
options.compilerArgs << '-Xlint:unchecked'
|
|
options.deprecation = true
|
|
}
|
|
|
|
assemble.dependsOn('shadowJar')
|
|
|
|
pitest {
|
|
timestampedReports = false
|
|
avoidCallsTo = ['org.sonar.api.utils.log.Logger']
|
|
}
|
|
|
|
jacocoTestReport {
|
|
reports {
|
|
xml.required = true
|
|
}
|
|
}
|
|
|
|
plugins.withType(JacocoPlugin) {
|
|
tasks["test"].finalizedBy 'jacocoTestReport'
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
testLogging {
|
|
events "passed", "skipped", "failed"
|
|
}
|
|
}
|