Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updgrade to release 1.12 from upstream #6

Merged
merged 52 commits into from
Nov 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
9d0a4bd
Bump mockito-core from 4.0.0 to 4.1.0
dependabot[bot] Nov 22, 2021
7586de5
Bump logging-interceptor from 4.9.2 to 4.9.3
dependabot[bot] Nov 22, 2021
fd4c16c
Bump bcpkix-jdk15on from 1.69 to 1.70
dependabot[bot] Dec 1, 2021
d315dcc
Bump actions/setup-java from 2.3.1 to 2.4.0
dependabot[bot] Nov 29, 2021
db17819
Bump junit-bom from 5.8.1 to 5.8.2
dependabot[bot] Nov 29, 2021
eb0fed2
Add missing base url while using bitbucket client
Nov 22, 2021
33a5266
Bump mockito-core from 4.1.0 to 4.2.0
dependabot[bot] Dec 17, 2021
3ae073f
Initiate release 1.10.0
mc1arke Dec 18, 2021
0b50e51
[Gradle Release Plugin] - new version commit: '1.10.1'.
web-flow Dec 18, 2021
f11ca76
Return to SNAPSHOT version post release
mc1arke Dec 18, 2021
dc99260
Update version numbers in README
mc1arke Dec 18, 2021
f75df67
Upgrade to the latest version of Gradle
mc1arke Dec 30, 2021
549ac1e
Bump actions/setup-java from 2.4.0 to 2.5.0
dependabot[bot] Dec 21, 2021
b3f1379
Bump jackson-datatype-jsr310 from 2.13.0 to 2.13.1
dependabot[bot] Dec 20, 2021
83d3a7f
Bump assertj-core from 3.21.0 to 3.22.0
dependabot[bot] Jan 3, 2022
958feac
Bump mockito-core from 4.2.0 to 4.3.0
dependabot[bot] Jan 25, 2022
bbe35bd
Bump actions/setup-java from 2.5.0 to 3
dependabot[bot] Feb 25, 2022
f432aef
Bump actions/checkout from 2 to 3
dependabot[bot] Mar 2, 2022
7d5fd6c
Bump jackson-datatype-jsr310 from 2.13.1 to 2.13.2
dependabot[bot] Mar 7, 2022
cbb42cf
Bump mockito-core from 4.3.0 to 4.4.0
dependabot[bot] Mar 9, 2022
5673a35
Bump actions/cache from 2 to 3
dependabot[bot] Mar 21, 2022
26fad70
#91: Add ability to donate to the project maintainer
mc1arke Apr 5, 2022
8e8a31c
#523: Add auto-detection for all CIs in Sonarqube commercial editions
mc1arke Dec 29, 2021
d7bb8b4
Refactor Bitbucket operations to prevent leaking scope
mc1arke Apr 8, 2022
bee1552
Refactor Github operations to prevent leaking scope
mc1arke Apr 8, 2022
f43b8e1
Remove cyclic dependency in Formatters
mc1arke Apr 9, 2022
5c7d391
#421: Don't trim whitespace during Markdown rendering
mc1arke Apr 8, 2022
ce92893
Move report generation out of AnalysisDetails
mc1arke Apr 10, 2022
675f2bb
Allow mono-repo decoration for Bitbucket
Feb 1, 2022
d10d791
Bump actions/upload-artifact from 2 to 3
dependabot[bot] Apr 11, 2022
6aba53b
Fix unit tests on Windows
johnou Apr 15, 2022
fbbc416
Decoration issue fails due invalid project id when branch is in fork
Apr 15, 2022
61fa515
Initiate release 1.11.0
mc1arke Apr 17, 2022
938efcd
[Gradle Release Plugin] - new version commit: '1.11.1'.
web-flow Apr 17, 2022
4c9d2a0
Return to SNAPSHOT version post release
mc1arke Apr 17, 2022
f1fd8b4
Update version numbers in README
mc1arke Apr 17, 2022
799f8c7
Bump github/codeql-action from 1 to 2
dependabot[bot] Apr 26, 2022
9079500
Bump javassist from 3.28.0-GA to 3.29.0-GA
dependabot[bot] May 16, 2022
f158223
Bump jackson-datatype-jsr310 from 2.13.2 to 2.13.3
dependabot[bot] May 16, 2022
d27d0b6
Bump mockito-core from 4.4.0 to 4.6.0
dependabot[bot] May 30, 2022
38b0301
Improve test stability
mc1arke May 31, 2022
577ab5b
Bump assertj-core from 3.22.0 to 3.23.1
dependabot[bot] May 31, 2022
2d5d2e5
#585 Register ObjectMapper modules so timestamps can be processed
Apr 19, 2022
726cb35
Swap repo slug and project key
Apr 19, 2022
28c0d95
Replace null values in Bitbucket analysis report
mc1arke Apr 27, 2022
24da20e
Bump mockito-core from 4.6.0 to 4.6.1
dependabot[bot] Jun 18, 2022
02dbff3
Bump logging-interceptor from 4.9.3 to 4.10.0
dependabot[bot] Jun 13, 2022
39b50e9
Add instructions for official SonarQube Helm Chart
rgembalik Jun 18, 2022
b7cfc90
Cleanup README contents
mc1arke Jun 18, 2022
4379082
#601 Strip user info from Azure DevOps repository link
mc1arke Jun 19, 2022
4fa1248
Initiate release 1.12.0
mc1arke Jun 25, 2022
1f8f5f9
[Gradle Release Plugin] - new version commit: '1.12.1'.
web-flow Nov 15, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .env
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# The Sonarqube base image. 'latest' if building locally, '8.5-community' if targeting a specific version
SONARQUBE_VERSION=latest
SONARQUBE_VERSION=9.5-community

# The name of the Dockerfile to run. 'Dockerfile' is building locally, 'release.Dockerfile' if building the release image
DOCKERFILE=Dockerfile
DOCKERFILE=release.Dockerfile

# The version of the plugin to include in the image
PLUGIN_VERSION=1.10.0-SNAPSHOT
PLUGIN_VERSION=1.12.0
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
github: [mc1arke]
24 changes: 12 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
-
name: Init
id: init
Expand All @@ -45,17 +45,17 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
-
name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v2.3.1
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java }}
java-package: jdk
distribution: 'zulu'
-
name: Cache deps
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
Expand All @@ -68,7 +68,7 @@ jobs:
-
name: Archive artifact
if: success() && matrix.java == '11'
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: snapshot
path: build/libs/*.jar
Expand All @@ -80,19 +80,19 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
-
name: Set up Java
uses: actions/setup-java@v2.3.1
uses: actions/setup-java@v3
with:
java-version: 11
java-package: jdk
distribution: 'zulu'
-
name: Cache deps
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
Expand All @@ -118,7 +118,7 @@ jobs:
-
name: Archive artifact
if: success()
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: release
path: build/libs/*.jar
Expand All @@ -141,19 +141,19 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 0
-
name: Set up Java
uses: actions/setup-java@v2.3.1
uses: actions/setup-java@v3
with:
java-version: 11
java-package: jdk
distribution: 'zulu'
-
name: Cache deps
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3

- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}

- name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@v2

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@v2
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
ARG SONARQUBE_VERSION

FROM openjdk:11-jdk-slim as builder
FROM gradle:7.3.3-jdk11-alpine as builder

COPY . /home/build/project
WORKDIR /home/build/project
RUN ./gradlew build -x test
RUN gradle build -x test
davidk81 marked this conversation as resolved.
Show resolved Hide resolved

FROM sonarqube:${SONARQUBE_VERSION}
COPY --from=builder --chown=sonarqube:sonarqube /home/build/project/build/libs/sonarqube-community-branch-plugin-*.jar /opt/sonarqube/extensions/plugins/
Expand Down
122 changes: 97 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,29 @@
[![Build Status](https://img.shields.io/github/workflow/status/mc1arke/sonarqube-community-branch-plugin/build?label=build&logo=github)](https://github.com/mc1arke/sonarqube-community-branch-plugin?workflow=build)

# Sonarqube Community Branch Plugin

A plugin for SonarQube to allow branch analysis in the Community version.

# Support
This plugin is not maintained or supported by SonarSource and has no official upgrade path for migrating from the SonarQube Community Edition to any of the Commercial Editions (Developer, Enterprise, or Data Center Edition). Support for any problems is only available through issues on the Github repository or through alternative channels (e.g. StackOverflow) and any attempt to request support for this plugin directly from SonarSource or an affiliated channel (e.g. Sonar Community forum) is likely to result in your request being closed or ignored.

If you plan on migrating your SonarQube data to a commercial edition after using this plugin then please be aware that this may result in some or all of your data being lost due to this compatibility of this plugin and the official SonarQube branch features being untested.
This plugin is not maintained or supported by SonarSource and has no official upgrade path for migrating from the
SonarQube Community Edition to any of the Commercial Editions (Developer, Enterprise, or Data Center Edition). Support
for any problems is only available through issues on the Github repository or through alternative channels (e.g.
StackOverflow) and any attempt to request support for this plugin directly from SonarSource or an affiliated channel (
e.g. Sonar Community forum) is likely to result in your request being closed or ignored.

If you plan on migrating your SonarQube data to a commercial edition after using this plugin then please be aware that
this may result in some or all of your data being lost due to this compatibility of this plugin and the official
SonarQube branch features being untested.

# Compatibility

Use the following table to find the correct plugin version for each SonarQube version

SonarQube Version | Plugin Version
------------------|---------------
9.0+ | 1.9.0
9.1+ | 1.11.0
9.0 | 1.9.0
8.9 | 1.8.1
8.7 - 8.8 | 1.7.0
8.5 - 8.6 | 1.6.0
Expand All @@ -24,61 +34,123 @@ SonarQube Version | Plugin Version
7.4 - 7.7 | 1.0.2

# Features
The plugin is intended to support the [features and parameters specified in the SonarQube documentation](https://docs.sonarqube.org/latest/branches/overview/).

The plugin is intended to support the
[features and parameters from the SonarQube documentation](https://docs.sonarqube.org/latest/branches/overview/).

# Installation

## Manual Install
__Please ensure you follow the installation instructions for the version of the plugin you're installing by looking at the README on the relevant release tag.__

Either build the project or [download a compatible release version of the plugin JAR](https://github.com/mc1arke/sonarqube-community-branch-plugin/releases).
__Please ensure you follow the installation instructions for the version of the plugin you're installing by looking at
the README on the relevant release tag.__

Either build the project
or [download a compatible release version of the plugin JAR](https://github.com/mc1arke/sonarqube-community-branch-plugin/releases)
.

1. Copy the plugin JAR file to the `extensions/plugins/` directory of your SonarQube instance
2. Add `-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-${version}.jar=web` to the `sonar.web.javaAdditionalOpts` property in your Sonarqube installation's `config/sonar.properties` file, e.g. `sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.0.jar=web`
3. Add `-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-${version}.jar=ce` to the `sonar.ce.javaAdditionalOpts` property in your Sonarqube installation's `config/sonar.properties` file, e.g. `sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.0.jar=ce`
2. Add `-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-${version}.jar=web` to
the `sonar.web.javaAdditionalOpts` property in your Sonarqube installation's `conf/sonar.properties` file,
e.g. `sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.0.jar=web`
3. Add `-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-${version}.jar=ce` to
the `sonar.ce.javaAdditionalOpts` property in your Sonarqube installation's `conf/sonar.properties` file,
e.g. `sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.0.jar=ce`
4. Start Sonarqube, and accept the warning about using third-party plugins

## Docker
The plugin is distributed in the [mc1arke/sonarqube-with-community-branch-plugin](https://hub.docker.com/r/mc1arke/sonarqube-with-community-branch-plugin) Docker image, with the image versions matching the up-stream Sonarqube image version.

__Note:__ If you're setting the `SONAR_WEB_JAVAADDITIONALOPTS` or `SONAR_CE_JAVAADDITIONALOPTS` environment variables in your container launch then you'll need to add the `javaagent` configuration to your overrides to match what's in the provided Dockerfile.
The plugin is distributed in
the [mc1arke/sonarqube-with-community-branch-plugin](https://hub.docker.com/r/mc1arke/sonarqube-with-community-branch-plugin)
Docker image, with the image versions matching the up-stream Sonarqube image version.

__Note:__ If you're setting the `SONAR_WEB_JAVAADDITIONALOPTS` or `SONAR_CE_JAVAADDITIONALOPTS` environment variables in
your container launch then you'll need to add the `javaagent` configuration to your overrides to match what's in the
provided Dockerfile.

## Kubernetes with official Helm Chart

When using
[Sonarqube official Helm Chart](https://github.com/SonarSource/helm-chart-sonarqube/tree/master/charts/sonarqube),
you need to add the following settings to your helm values, where `${version}` should be replaced with the plugin
version (e.g. `1.11.0`):

```yaml
plugins:
install:
- https://github.com/mc1arke/sonarqube-community-branch-plugin/releases/download/${version}/sonarqube-community-branch-plugin-${version}.jar
lib:
- sonarqube-community-branch-plugin-${version}.jar
jvmOpts: "-javaagent:/opt/sonarqube/lib/common/sonarqube-community-branch-plugin-${version}.jar=web"
jvmCeOpts: "-javaagent:/opt/sonarqube/lib/common/sonarqube-community-branch-plugin-${version}.jar=ce"
```

### Issues with file path with persistency

If you set `persistence.enabled=true` on SonarQube chart, the plugin might be copied to this path:

```
/opt/sonarqube/lib/common/sonarqube-community-branch-plugin-${version}.jar/sonarqube-community-branch-plugin-${version}.jar
```

instead of this:

```
/opt/sonarqube/lib/common/sonarqube-community-branch-plugin-${version}.jar
```

As a workaround either change the paths in the config above, or exec into the container and move file up the directory
to match the config.

# Configuration

## Global configuration

Make sure `sonar.core.serverBaseURL` in SonarQube [/admin/settings](http://localhost:9000/admin/settings) is properly
set in order to for the links in the comment to work.
set in order to for the links in the comment to work.

Set all other properties that you can define globally for all of your projects.

## How to decorate the PR
## How to decorate a Pull Request

In order to decorate your Pull Request's source branch, you need to analyze your target branch first.

### Run analysis of branches

The analysis needs the following setting:

If the scan is being run from a CI supporting auto-configuration then the scanner can be launched without any branch
parameters. Otherwise, the analysis needs the following setting:
`sonar.branch.name = branch_name (e.g master)`

### Run analysis of the PR branch
Carefully read the official SonarQube guide for [pull request decoration](https://docs.sonarqube.org/latest/analysis/pull-request/)

In there you'll find the following properties that need to be set.
Carefully read the official SonarQube guide
for [pull request decoration](https://docs.sonarqube.org/latest/analysis/pull-request/)

In there you'll find the following properties that need to be set, unless your CI support auto-configuration.

```
sonar.pullrequest.key = pull_request_id (e.g. 100)
sonar.pullrequest.branch = source_branch_name (e.g feature/TICKET-123)
sonar.pullrequest.base = target_branch_name (e.g master)
```

:warning: There must not be any `sonar.branch` properties like `sonar.branch.name` arguments set when you analyze a
pull-request. These properties indicate to sonar that a branch is being analyzed rather than a pull-request so no
pull-request decoration will be executed.
pull-request. These properties indicate to sonar that a branch is being analyzed rather than a pull-request so no
pull-request decoration will be executed.

## Serving images for PR decoration
By default, images for PR decoration are served as static resources on the SonarQube server as a part of Community Branch Plugin.

If you use a SonarQube server behind a firewall and/or PR service (Github, Gitlab etc.) hasn't access to SonarQube server, you should change `Images base URL` property in `General > Pull Request` settings.
By default, images for PR decoration are served as static resources on the SonarQube server as a part of Community
Branch Plugin.

If you use a SonarQube server behind a firewall and/or PR service (Github, Gitlab etc.) doesn't have access to SonarQube
server, you should change `Images base URL` property in `General > Pull Request` settings.

Anyone needing to set this value can use the
URL `https://raw.githubusercontent.com/mc1arke/sonarqube-community-branch-plugin/master/src/main/resources/static`, or
download the files from this location and host them themself.

Anyone needing to set this value can use the URL `https://raw.githubusercontent.com/mc1arke/sonarqube-community-branch-plugin/master/src/main/resources/static`, or download the files from this location and host them themself.

# Building the plugin from source
In case you want to try and test the current branch or build it for your development execute `./gradlew clean build
` inside of the project directory. This will put the built jar under `libs/sonarqube-community-branch-plugin*.jar`

If you want to try and test the current branch or build it for your development execute `./gradlew clean build`
inside of the project directory. This will put the built jar under `libs/sonarqube-community-branch-plugin*.jar`
18 changes: 11 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,27 @@ configurations {

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:4.0.0')
testImplementation('org.assertj:assertj-core:3.21.0')
testImplementation('org.mockito:mockito-core:4.6.1')
testImplementation('org.assertj:assertj-core:3.23.1')
testImplementation('com.github.tomakehurst:wiremock:2.27.2')
zip("sonarqube:sonarqube:${sonarqubeVersion}@zip")
implementation('org.bouncycastle:bcpkix-jdk15on:1.69')
implementation('org.bouncycastle:bcpkix-jdk15on:1.70')
implementation(files('lib/nodes-0.5.0.jar'))
runtimeOnly('com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.0')
runtimeOnly('com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3')
compileOnly('com.google.code.findbugs:jsr305:3.0.2')
implementation('org.javassist:javassist:3.28.0-GA')
implementation('com.squareup.okhttp3:logging-interceptor:4.9.2')
testImplementation(platform('org.junit:junit-bom:5.8.1'))
implementation('org.javassist:javassist:3.29.0-GA')
implementation('com.squareup.okhttp3:logging-interceptor:4.10.0')
testImplementation(platform('org.junit:junit-bom:5.8.2'))
testImplementation('org.junit.jupiter:junit-jupiter')
testImplementation('junit:junit:4.13.2')
testRuntimeOnly('org.junit.vintage:junit-vintage-engine')
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=1.10.0-SNAPSHOT
version=1.12.1
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading