Skip to content
Snippets Groups Projects
Commit 6da8e71b authored by Martin Lowe's avatar Martin Lowe :flag_ca:
Browse files

Merge branch 'malowe/master/sonar-ci' into 'master'

Add Sonarcloud bindings to CI build and pom

See merge request !33
parents 4697260e df14317f
No related branches found
No related tags found
1 merge request!33Add Sonarcloud bindings to CI build and pom
Pipeline #30967 failed
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
spec: spec:
containers: containers:
- name: buildcontainer - name: buildcontainer
image: eclipsefdn/stack-build-agent:latest image: eclipsefdn/stack-build-agent:h111.3-n18.16-jdk11
imagePullPolicy: Always imagePullPolicy: Always
command: command:
- cat - cat
...@@ -48,6 +48,9 @@ ...@@ -48,6 +48,9 @@
- mountPath: "/home/jenkins/.cache" - mountPath: "/home/jenkins/.cache"
name: "yarn-cache" name: "yarn-cache"
readOnly: false readOnly: false
- mountPath: "/home/jenkins/.sonar"
name: "sonar-cache"
readOnly: false
- name: jnlp - name: jnlp
resources: resources:
requests: requests:
...@@ -69,6 +72,8 @@ ...@@ -69,6 +72,8 @@
emptyDir: {} emptyDir: {}
- name: yarn-cache - name: yarn-cache
emptyDir: {} emptyDir: {}
- name: sonar-cache
emptyDir: {}
''' '''
} }
} }
...@@ -108,23 +113,59 @@ ...@@ -108,23 +113,59 @@
} }
stages { stages {
stage('Build Java code') { stage('Compile GeoIP resources') {
steps { steps {
container('buildcontainer') { container('buildcontainer') {
readTrusted 'Makefile'
readTrusted './bin/maxmind.sh' readTrusted './bin/maxmind.sh'
readTrusted 'mvnw'
readTrusted '.mvn/wrapper/MavenWrapperDownloader.java'
readTrusted 'pom.xml'
withCredentials([string(credentialsId: 'maxmind-license-key', variable: 'MAXMIND_LICENSE_KEY')]) { withCredentials([string(credentialsId: 'maxmind-license-key', variable: 'MAXMIND_LICENSE_KEY')]) {
sh 'mkdir -p ./maxmind && ./bin/maxmind.sh $PWD/maxmind' sh 'mkdir -p ./maxmind && ./bin/maxmind.sh $PWD/maxmind'
} }
sh 'make compile-java'
stash includes: 'target/', name: 'target'
stash includes: 'maxmind/**/*', name: 'maxmind' stash includes: 'maxmind/**/*', name: 'maxmind'
}
}
}
stage('Build with Sonarcloud scan') {
when {
branch 'master'
}
steps {
container('buildcontainer') {
readTrusted 'pom.xml'
readTrusted 'Makefile'
unstash 'maxmind'
sh 'make generate-spec'
withCredentials([string(credentialsId: 'sonarcloud-token-geoip-rest-api', variable: 'SONAR_TOKEN')]) {
sh 'mvn -B clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.login=${SONAR_TOKEN} \
-Declipse.maxmind.root=${PWD}/maxmind \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn'
}
}
}
}
stage('Build without Sonarcloud scan') {
when {
not {
branch 'master'
}
}
steps {
container('buildcontainer') {
readTrusted 'pom.xml'
unstash 'maxmind'
sh 'make compile-java'
// only no-scan builds can be deployed as we don't deploy main
stash includes: 'target/', name: 'target'
} }
} }
} }
...@@ -133,6 +174,12 @@ ...@@ -133,6 +174,12 @@
agent { agent {
label 'docker-build' label 'docker-build'
} }
when {
anyOf {
environment name: 'ENVIRONMENT', value: 'production'
environment name: 'ENVIRONMENT', value: 'staging'
}
}
steps { steps {
readTrusted 'src/main/docker/Dockerfile.jvm' readTrusted 'src/main/docker/Dockerfile.jvm'
......
<?xml version="1.0"?> <?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <project
<modelVersion>4.0.0</modelVersion> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
<groupId>org.eclipsefoundation</groupId> xmlns="http://maven.apache.org/POM/4.0.0"
<artifactId>geoip-client</artifactId> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<version>1.0.0-SNAPSHOT</version> <modelVersion>4.0.0</modelVersion>
<properties> <groupId>org.eclipsefoundation</groupId>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <artifactId>geoip-client</artifactId>
<maven.compiler.parameters>true</maven.compiler.parameters> <version>1.0.0-SNAPSHOT</version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id> <properties>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus.platform.version>2.16.7.Final</quarkus.platform.version> <maven.compiler.parameters>true</maven.compiler.parameters>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>2.16.7.Final</quarkus.platform.version>
<eclipse-api-version>0.8.0</eclipse-api-version> <eclipse-api-version>0.8.0</eclipse-api-version>
<surefire-plugin.version>3.0.0-M5</surefire-plugin.version> <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.target>11</maven.compiler.target>
<compiler-plugin.version>3.8.1</compiler-plugin.version> <compiler-plugin.version>3.8.1</compiler-plugin.version>
<auto-value.version>1.8.2</auto-value.version> <auto-value.version>1.8.2</auto-value.version>
<sonar.sources>src/main</sonar.sources> <sonar.sources>src/main</sonar.sources>
<sonar.tests>src/test</sonar.tests> <sonar.tests>src/test</sonar.tests>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/jacoco-report/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths> <sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/jacoco-report/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
<sonar.junit.reportPath>${project.build.directory}/surefire-reports</sonar.junit.reportPath> <sonar.junit.reportPath>${project.build.directory}/surefire-reports</sonar.junit.reportPath>
</properties> <sonar.organization>eclipse-foundation-it</sonar.organization>
<repositories> <sonar.projectKey>geoip-rest-api</sonar.projectKey>
<repository> </properties>
<id>eclipsefdn</id> <repositories>
<url>https://repo.eclipse.org/content/repositories/eclipsefdn/</url> <repository>
<releases> <id>eclipsefdn</id>
<enabled>true</enabled> <url>https://repo.eclipse.org/content/repositories/eclipsefdn/</url>
</releases> <releases>
<snapshots> <enabled>true</enabled>
<enabled>true</enabled> </releases>
</snapshots> <snapshots>
</repository> <enabled>true</enabled>
</repositories> </snapshots>
<dependencyManagement> </repository>
<dependencies> </repositories>
<dependency> <dependencyManagement>
<groupId>${quarkus.platform.group-id}</groupId> <dependencies>
<artifactId>${quarkus.platform.artifact-id}</artifactId> <dependency>
<version>${quarkus.platform.version}</version> <groupId>${quarkus.platform.group-id}</groupId>
<type>pom</type> <artifactId>${quarkus.platform.artifact-id}</artifactId>
<scope>import</scope> <version>${quarkus.platform.version}</version>
</dependency> <type>pom</type>
</dependencies> <scope>import</scope>
</dependencyManagement> </dependency>
<dependencies> </dependencies>
<dependency> </dependencyManagement>
<groupId>org.eclipsefoundation</groupId> <dependencies>
<artifactId>quarkus-core</artifactId> <dependency>
<version>${eclipse-api-version}</version> <groupId>org.eclipsefoundation</groupId>
</dependency> <artifactId>quarkus-core</artifactId>
<dependency> <version>${eclipse-api-version}</version>
<groupId>io.quarkus</groupId> </dependency>
<artifactId>quarkus-resteasy</artifactId> <dependency>
</dependency> <groupId>io.quarkus</groupId>
<dependency> <artifactId>quarkus-resteasy</artifactId>
<groupId>io.quarkus</groupId> </dependency>
<artifactId>quarkus-resteasy-jackson</artifactId> <dependency>
</dependency> <groupId>io.quarkus</groupId>
<dependency> <artifactId>quarkus-resteasy-jackson</artifactId>
<groupId>io.quarkus</groupId> </dependency>
<artifactId>quarkus-arc</artifactId> <dependency>
</dependency> <groupId>io.quarkus</groupId>
<dependency> <artifactId>quarkus-arc</artifactId>
<groupId>com.maxmind.geoip2</groupId> </dependency>
<artifactId>geoip2</artifactId> <dependency>
<version>2.15.0</version> <groupId>com.maxmind.geoip2</groupId>
</dependency> <artifactId>geoip2</artifactId>
<dependency> <version>2.15.0</version>
<groupId>com.google.guava</groupId> </dependency>
<artifactId>guava</artifactId> <dependency>
</dependency> <groupId>com.google.guava</groupId>
<dependency> <artifactId>guava</artifactId>
<groupId>com.opencsv</groupId> </dependency>
<artifactId>opencsv</artifactId> <dependency>
<version>5.0</version> <groupId>com.opencsv</groupId>
<exclusions> <artifactId>opencsv</artifactId>
<exclusion> <version>5.0</version>
<groupId>commons-logging</groupId> <exclusions>
<artifactId>commons-logging</artifactId> <exclusion>
</exclusion> <groupId>commons-logging</groupId>
</exclusions> <artifactId>commons-logging</artifactId>
</dependency> </exclusion>
</exclusions>
</dependency>
<!-- Required for opencsv --> <!-- Required for opencsv -->
<dependency> <dependency>
<groupId>org.jboss.logging</groupId> <groupId>org.jboss.logging</groupId>
<artifactId>commons-logging-jboss-logging</artifactId> <artifactId>commons-logging-jboss-logging</artifactId>
</dependency> </dependency>
<!-- Test dependencies --> <!-- Test dependencies -->
<dependency> <dependency>
<groupId>io.quarkus</groupId> <groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId> <artifactId>quarkus-junit5</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.rest-assured</groupId> <groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId> <artifactId>rest-assured</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.rest-assured</groupId> <groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId> <artifactId>json-schema-validator</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.eclipsefoundation</groupId> <groupId>org.eclipsefoundation</groupId>
<artifactId>quarkus-test-common</artifactId> <artifactId>quarkus-test-common</artifactId>
<version>${eclipse-api-version}</version> <version>${eclipse-api-version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.quarkus</groupId> <groupId>io.quarkus</groupId>
<artifactId>quarkus-jacoco</artifactId> <artifactId>quarkus-jacoco</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> <dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jacoco</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>${quarkus.platform.group-id}</groupId> <groupId>${quarkus.platform.group-id}</groupId>
<artifactId>quarkus-maven-plugin</artifactId> <artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.platform.version}</version> <version>${quarkus.platform.version}</version>
<extensions>true</extensions> <extensions>true</extensions>
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>build</goal> <goal>build</goal>
<goal>generate-code</goal> <goal>generate-code</goal>
<goal>generate-code-tests</goal> <goal>generate-code-tests</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version> <version>${compiler-plugin.version}</version>
<configuration> <configuration>
<annotationProcessorPaths> <annotationProcessorPaths>
<path> <path>
<groupId>com.google.auto.value</groupId> <groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId> <artifactId>auto-value</artifactId>
<version>${auto-value.version}</version> <version>${auto-value.version}</version>
</path> </path>
</annotationProcessorPaths> </annotationProcessorPaths>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version> <version>${surefire-plugin.version}</version>
<configuration> <configuration>
<skipTests>false</skipTests> <skipTests>false</skipTests>
<systemPropertyVariables> <systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home> <maven.home>${maven.home}</maven.home>
</systemPropertyVariables> </systemPropertyVariables>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
<profiles> <profiles>
<profile> <profile>
<id>native</id> <id>native</id>
<activation> <activation>
<property> <property>
<name>native</name> <name>native</name>
</property> </property>
</activation> </activation>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<artifactId>maven-failsafe-plugin</artifactId> <artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version> <version>${surefire-plugin.version}</version>
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>integration-test</goal> <goal>integration-test</goal>
<goal>verify</goal> <goal>verify</goal>
</goals> </goals>
<configuration> <configuration>
<systemPropertyVariables> <systemPropertyVariables>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path> <native.image.path>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> ${project.build.directory}/${project.build.finalName}-runner</native.image.path>
<maven.home>${maven.home}</maven.home> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemPropertyVariables> <maven.home>${maven.home}</maven.home>
</configuration> </systemPropertyVariables>
</execution> </configuration>
</executions> </execution>
</plugin> </executions>
</plugins> </plugin>
</build> </plugins>
<properties> </build>
<quarkus.package.type>native</quarkus.package.type> <properties>
</properties> <quarkus.package.type>native</quarkus.package.type>
</profile> </properties>
</profiles> </profile>
</profiles>
</project> </project>
\ No newline at end of file
eclipse.maxmind.root=./tmp/maxmind eclipse.maxmind.root=./tmp/maxmind
quarkus.jacoco.includes=**/geoip/**/* quarkus.jacoco.includes=**/geoip/**/*
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment