Implement release as github action (#2452)

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2025-06-16 14:43:17 +03:00
committed by GitHub
parent 0ba4c7b790
commit 044963f84c
10 changed files with 683 additions and 223 deletions

68
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,68 @@
name: Release
on:
# enable running the workflow manually
workflow_dispatch:
inputs:
revision:
description: 'Release version'
required: true
jobs:
verify:
runs-on: ubuntu-latest
services:
rabbitmq:
image: rabbitmq:3-management-alpine
env:
RABBITMQ_DEFAULT_VHOST: /
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- 15672:15672
- 5672:5672
steps:
- uses: actions/checkout@v4
- name: Set up JDK & Maven Central credentials
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
cache: 'maven'
server-id: central
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Cache local Maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Check file license headers
run: mvn license:check -Plicense --batch-mode
# - name: Check dependency licenses with dash tool
# run: mvn license-tool:license-check -Plicense --projects '!org.eclipse.hawkbit:hawkbit-repository-test,!org.eclipse.hawkbit:hawkbit-dmf-rabbitmq-test' --batch-mode
- name: Run tests & build javadoc
run: mvn clean install javadoc:jar -Dadditionalparam=-Xdoclint:none --batch-mode
- name: Deploy
run: mvn deploy -Ppublish -DskipTests -Drevision=${REVISION} -B --batch-mode
env:
REVISION: ${{ github.event.inputs.revision }}
MAVEN_USERNAME: ${{ secrets.CENTRAL_SONATYPE_TOKEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.CENTRAL_SONATYPE_TOKEN_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Tag release
run: |
git tag -a ${REVISION} -m "Release version ${REVISION}"
git push origin ${REVISION}
env:
REVISION: ${{ github.event.inputs.revision }}

View File

@@ -1,6 +1,7 @@
name: Mark & close stale issues
on:
# enable running the workflow manually
workflow_dispatch:
schedule:
- cron: "0 0 * * *"

View File

@@ -1,11 +1,11 @@
name: Vulnerability Scan
on:
# enable running the workflow manually
workflow_dispatch:
schedule:
# run every night at 4:00 AM (UTC)
- cron: '0 4 * * *'
# enable running the workflow manually
workflow_dispatch:
jobs:
scan:

View File

@@ -48,7 +48,7 @@ jobs:
${{ runner.os }}-maven-
- name: Check file license headers
run: mvn license:check --batch-mode
run: mvn license:check -Plicense --batch-mode
- name: Run tests & javadoc
run: mvn clean verify javadoc:javadoc --batch-mode -Djpa.vendor=hibernate -Dlogging.level.org.hibernate.collection.spi.AbstractPersistentCollection=ERROR

View File

@@ -48,7 +48,7 @@ jobs:
${{ runner.os }}-maven-
- name: Check file license headers
run: mvn license:check --batch-mode
run: mvn license:check -Plicense --batch-mode
- name: Run tests & javadoc
run: mvn clean verify javadoc:javadoc --batch-mode

View File

@@ -0,0 +1,405 @@
<!--
Copyright (c) 2025 Contributors to the Eclipse Foundation
This program and the accompanying materials are made
available under the terms of the Eclipse Public License 2.0
which is available at https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.hawkbit</groupId>
<artifactId>hawkbit-dependencies</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<name>hawkBit :: Parent</name>
<licenses>
<license>
<name>EPL-2.0</name>
<url>https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt</url>
<comments>Eclipse Public License - Version 2.0</comments>
</license>
</licenses>
<properties>
<spring.boot.version>3.5.0</spring.boot.version>
<spring.cloud.version>2025.0.0</spring.cloud.version>
<springdoc-openapi.version>2.8.9</springdoc-openapi.version>
<spring.plugin.core.version>3.0.0</spring.plugin.core.version>
<!-- Spring boot version overrides (should be reviewed with every Spring boot upgrade) - START -->
<!-- Newer versions needed than defined in the Spring boot -->
<!-- Spring boot version overrides - END -->
<!-- Eclipselink - START -->
<eclipselink.version>4.0.6</eclipselink.version>
<eclipselink.maven.plugin.version>3.0.2</eclipselink.maven.plugin.version>
<!-- Eclipselink - END -->
<!-- Misc libraries versions - START -->
<cron-utils.version>9.2.1</cron-utils.version>
<jsoup.version>1.20.1</jsoup.version>
<javax.el-api.version>3.0.0</javax.el-api.version>
<rsql-parser.version>2.1.0</rsql-parser.version>
<commons-io.version>2.19.0</commons-io.version>
<commons-collections4.version>4.5.0</commons-collections4.version>
<commons-text.version>1.13.1</commons-text.version>
<io-protostuff.version>1.8.0</io-protostuff.version>
<!-- test -->
<rabbitmq.http-client.version>5.4.0</rabbitmq.http-client.version>
<classgraph.version>4.8.179</classgraph.version>
<allure.version>2.29.1</allure.version>
<awaitility.version>4.3.0</awaitility.version>
<!-- Misc libraries versions - END -->
<!-- Maven Plugin versions - START -->
<maven.enforcer.plugin.version>3.5.0</maven.enforcer.plugin.version>
<flatten.maven.plugin.version>1.7.0</flatten.maven.plugin.version>
<maven.site.plugin.version>3.21.0</maven.site.plugin.version>
<maven.surefire.plugin.version>3.5.3</maven.surefire.plugin.version>
<maven.failsafe.plugin.version>3.5.3</maven.failsafe.plugin.version>
<jacoco.maven.plugin.version>0.8.13</jacoco.maven.plugin.version>
<!-- Maven Plugin versions - END -->
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc-openapi.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId>
<version>${spring.plugin.core.version}</version>
</dependency>
<!-- Misc -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>http-client</artifactId>
<version>${rabbitmq.http-client.version}</version>
</dependency>
<dependency>
<groupId>com.cronutils</groupId>
<artifactId>cron-utils</artifactId>
<version>${cron-utils.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>${javax.el-api.version}</version>
</dependency>
<!-- Protostuff Io -->
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-core</artifactId>
<version>${io-protostuff.version}</version>
</dependency>
<dependency>
<groupId>io.protostuff</groupId>
<artifactId>protostuff-runtime</artifactId>
<version>${io-protostuff.version}</version>
</dependency>
<!-- RSQL / FIQL parser -->
<dependency>
<groupId>cz.jirutka.rsql</groupId>
<artifactId>rsql-parser</artifactId>
<version>${rsql-parser.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>${commons-collections4.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>${commons-text.version}</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>io.github.classgraph</groupId>
<artifactId>classgraph</artifactId>
<version>${classgraph.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-junit</artifactId>
<version>${spring-amqp.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<version>${spring-amqp.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-junit5</artifactId>
<version>${allure.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>${awaitility.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven.enforcer.plugin.version}</version>
<executions>
<execution>
<!-- Make sure that only non-snapshot versions are used for the dependencies.
Only active when property 'skipEnforcer' is not set to true. -->
<id>enforce-no-snapshots</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<skip>${skipEnforcer}</skip>
<rules>
<requireMavenVersion>
<version>3.9</version>
</requireMavenVersion>
<requireJavaVersion>
<version>17</version>
</requireJavaVersion>
<requireReleaseDeps>
<message>No Snapshots Allowed!</message>
<onlyWhenRelease>true</onlyWhenRelease>
</requireReleaseDeps>
<requireReleaseDeps>
<message>No Snapshots Allowed!</message>
<onlyWhenRelease>false</onlyWhenRelease>
<excludes>
<exclude>org.eclipse.hawkbit:*</exclude>
</excludes>
</requireReleaseDeps>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>${flatten.maven.plugin.version}</version>
<configuration>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
<updatePomFile>true</updatePomFile>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<doclint>syntax</doclint>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${maven.site.plugin.version}</version>
<configuration>
<skip>true</skip>
<skipDeploy>true</skipDeploy>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<systemPropertyVariables>
<!-- Set output directory according to allure-framework recommendation -->
<allure.results.directory>${project.build.directory}/allure-results
</allure.results.directory>
<!-- Bugfix for timeout. See https://github.com/allure-framework/allure-maven/issues/59 -->
<allure.serve.timeout>650</allure.serve.timeout>
</systemPropertyVariables>
<!-- Bugfix for OpenJDK 8u181, see https://issues.apache.org/jira/browse/SUREFIRE-1588 -->
<useSystemClassLoader>false</useSystemClassLoader>
<reuseForks>true</reuseForks>
<forkCount>${surefire.forkcount}</forkCount>
<argLine>${jacoco.agent.ut.arg} ${test.jvm.args}</argLine>
<properties>
<property>
<name>listener</name>
<value>io.qameta.allure.junit5.AllureJunit5</value>
</property>
</properties>
<includes>
<include>**/*Tests.java</include>
<include>**/*Test.java</include>
<include>**/*IT.java</include>
</includes>
<excludes>
<exclude>**/Abstract*.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven.failsafe.plugin.version}</version>
<configuration>
<reuseForks>false</reuseForks>
<forkCount>${surefire.forkcount}</forkCount>
<argLine>-Xmx1024m ${jacoco.agent.ut.arg}</argLine>
<properties>
<property>
<name>listener</name>
<value>io.qameta.allure.junit5.AllureJunit5</value>
</property>
</properties>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.maven.plugin.version}</version>
<executions>
<execution>
<id>prepare-ut-agent</id>
<phase>process-test-classes</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacoco.agent.ut.arg</propertyName>
</configuration>
</execution>
<execution>
<id>prepare-it-agent</id>
<phase>pre-integration-test</phase>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
<configuration>
<propertyName>jacoco.agent.it.arg</propertyName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

View File

@@ -70,6 +70,10 @@
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -132,6 +132,7 @@
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -17,7 +17,6 @@ import static org.junit.jupiter.api.Assertions.fail;
import java.io.Serial;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

416
pom.xml
View File

@@ -41,8 +41,7 @@
as libraries in other projects might be compiled with a different, lower, java version. -->
<java.client.version>17</java.client.version>
<snapshotDependencyAllowed>true</snapshotDependencyAllowed>
<!-- must be the same as the parent version -->
<spring.boot.version>3.5.0</spring.boot.version>
<spring.cloud.version>2025.0.0</spring.cloud.version>
<springdoc-openapi.version>2.8.9</springdoc-openapi.version>
@@ -76,23 +75,22 @@
<!-- Maven Plugin versions - START -->
<maven.enforcer.plugin.version>3.5.0</maven.enforcer.plugin.version>
<flatten.maven.plugin.version>1.7.0</flatten.maven.plugin.version>
<maven.scm.plugin.version>2.1.0</maven.scm.plugin.version>
<maven.site.plugin.version>3.21.0</maven.site.plugin.version>
<license.tool.plugin.version>1.1.0</license.tool.plugin.version>
<license.maven.plugin.version>5.0.0</license.maven.plugin.version>
<maven.surefire.plugin.version>3.5.3</maven.surefire.plugin.version>
<maven.failsafe.plugin.version>3.5.3</maven.failsafe.plugin.version>
<jacoco.maven.plugin.version>0.8.13</jacoco.maven.plugin.version>
<license.tool.plugin.version>1.1.0</license.tool.plugin.version>
<license.maven.plugin.version>5.0.0</license.maven.plugin.version>
<central.publishing.maven.plugin.version>0.7.0</central.publishing.maven.plugin.version>
<maven.gpg.plugin.version>3.2.7</maven.gpg.plugin.version>
<!-- Maven Plugin versions - END -->
<!-- Release - START -->
<release.scm.connection>scm:git:git@github.com:eclipse/hawkbit.git</release.scm.connection>
<release.scm.developerConnection>scm:git:https://github.com/eclipse-hawkbit/hawkbit.git
<release.scm.developerConnection>
scm:git:https://github.com/eclipse-hawkbit/hawkbit.git
</release.scm.developerConnection>
<release.scm.url>https://github.com/eclipse-hawkbit/hawkbit.git</release.scm.url>
<!-- Release - END -->
@@ -118,40 +116,21 @@
<!-- Sonar - END -->
<!-- Dash tool integration - START -->
<dash.skip>true</dash.skip>
<dash.skip>false</dash.skip>
<dash.fail>true</dash.fail>
<dash.projectId>iot.hawkbit</dash.projectId>
<dash.summary>${project.build.directory}/dash/summary</dash.summary>
<dash.summary>${project.build.directory}/.3rd-party/DEPENDENCIES</dash.summary>
<!-- To automatically create IP Team review requests for identified content call with -Ddash.iplab.token=<token> (do not share your access token) -->
<dash.review.summary>${project.build.directory}/dash/review-summary</dash.review.summary>
<dash.review.summary>${project.build.directory}/.3rd-party/DEPENDENCIES_REVIEW</dash.review.summary>
<excludeGroupIds>org.eclipse,org.junit</excludeGroupIds>
<!-- Dash tool integration - END -->
<!-- test -->
<!-- Test - START -->
<surefire.forkcount>1</surefire.forkcount>
<test.jvm.args/>
<!-- Test - END -->
</properties>
<modules>
<module>hawkbit-core</module>
<module>hawkbit-security-core</module>
<module>hawkbit-artifact</module>
<module>hawkbit-repository</module>
<module>hawkbit-rest-core</module>
<module>hawkbit-autoconfigure</module>
<module>hawkbit-mgmt</module>
<module>hawkbit-ddi</module>
<module>hawkbit-dmf</module>
<module>hawkbit-monolith</module>
<module>hawkbit-simple-ui</module>
<module>hawkbit-sdk</module>
<module>hawkbit-test-report</module>
</modules>
<scm>
<connection>${release.scm.connection}</connection>
<developerConnection>${release.scm.developerConnection}</developerConnection>
@@ -219,14 +198,6 @@
</developer>
</developers>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<name>hawkBit Repository - Snapshots</name>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<pluginRepositories>
<pluginRepository>
<id>dash-licenses</id>
@@ -236,6 +207,15 @@
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -244,32 +224,11 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.eclipse.dash</groupId>
<artifactId>license-tool-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
@@ -278,60 +237,45 @@
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<doclint>syntax</doclint>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven.enforcer.plugin.version}</version>
<executions>
<execution>
<!-- Make sure that only non-snapshot versions are used
for the dependencies. Only active when property 'snapshotDependencyAllowed'
is false. -->
<id>enforce-no-snapshots</id>
<id>enforce-maven-and-java</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<skip>${snapshotDependencyAllowed}</skip>
<rules>
<requireReleaseDeps>
<message>No Snapshots Allowed!</message>
</requireReleaseDeps>
<requireReleaseVersion>
<message>No Snapshots Allowed!</message>
</requireReleaseVersion>
<requireMavenVersion>
<version>3.9</version>
</requireMavenVersion>
<requireJavaVersion>
<version>17</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
<execution>
<id>enforce-no-snapshots-deps</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireReleaseDeps>
<message>No Snapshots Allowed!</message>
<onlyWhenRelease>true</onlyWhenRelease>
</requireReleaseDeps>
<requireReleaseDeps>
<message>No Snapshots Allowed!</message>
<onlyWhenRelease>false</onlyWhenRelease>
<excludes>
<exclude>org.eclipse.hawkbit:*</exclude>
</excludes>
</requireReleaseDeps>
</rules>
</configuration>
</execution>
@@ -362,14 +306,36 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>${maven.scm.plugin.version}</version>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<tag>${project.version}</tag>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<doclint>syntax</doclint>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
@@ -380,77 +346,6 @@
</configuration>
</plugin>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${license.maven.plugin.version}</version>
<configuration>
<licenseSets>
<licenseSet>
<header>licenses/LICENSE_HEADER_TEMPLATE.txt</header>
<validHeaders>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_23.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_24.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_15.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_18.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_19.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_20.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_21.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_22.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_23.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_18.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_20.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_SIEMENS.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_SIEMENS_18.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_19.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_20.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_KIWIGRID_19.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BLUEZONE_25.txt</validHeader>
</validHeaders>
<excludes>
<exclude>.3rd-party/**</exclude>
<exclude>.git*</exclude>
<exclude>.github/**</exclude>
<exclude>licenses/LICENSE*</exclude>
<exclude>eclipse_codeformatter.xml</exclude>
<exclude>intellij_codeformatter.xml</exclude>
<exclude>**/banner.txt</exclude>
<exclude>**/helm/**</exclude>
<exclude>**/README</exclude>
<exclude>**/.git*</exclude>
<exclude>**/robots.txt</exclude>
<exclude>**/*.sql</exclude>
<exclude>**/docker/**</exclude>
<exclude>**/frontend/**</exclude>
<exclude>site/content/**</exclude>
<exclude>site/layouts/**</exclude>
<exclude>site/static/**</exclude>
<exclude>site/*.toml</exclude>
<exclude>**/spring.factories</exclude>
</excludes>
</licenseSet>
</licenseSets>
<mapping>
<java>JAVADOC_STYLE</java>
<scss>JAVADOC_STYLE</scss>
</mapping>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.dash</groupId>
<artifactId>license-tool-plugin</artifactId>
<version>${license.tool.plugin.version}</version>
<executions>
<execution>
<id>license-check</id>
<goals>
<goal>license-check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
@@ -458,7 +353,8 @@
<configuration>
<systemPropertyVariables>
<!-- Set output directory according to allure-framework recommendation -->
<allure.results.directory>${project.build.directory}/allure-results
<allure.results.directory>
${project.build.directory}/allure-results
</allure.results.directory>
<!-- Bugfix for timeout. See https://github.com/allure-framework/allure-maven/issues/59 -->
<allure.serve.timeout>650</allure.serve.timeout>
@@ -542,10 +438,93 @@
<profiles>
<profile>
<id>license</id>
<activation>
<property>
<name>license</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${license.maven.plugin.version}</version>
<configuration>
<licenseSets>
<licenseSet>
<header>licenses/LICENSE_HEADER_TEMPLATE.txt</header>
<validHeaders>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_23.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_24.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_15.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_18.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_19.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_20.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_21.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_22.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BOSCH_23.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_18.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_20.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_SIEMENS.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_SIEMENS_18.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_19.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_20.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_KIWIGRID_19.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt</validHeader>
<validHeader>licenses/LICENSE_HEADER_TEMPLATE_BLUEZONE_25.txt</validHeader>
</validHeaders>
<excludes>
<exclude>.3rd-party/**</exclude>
<exclude>.git*</exclude>
<exclude>.github/**</exclude>
<exclude>licenses/LICENSE*</exclude>
<exclude>eclipse_codeformatter.xml</exclude>
<exclude>intellij_codeformatter.xml</exclude>
<exclude>**/banner.txt</exclude>
<exclude>**/helm/**</exclude>
<exclude>**/README</exclude>
<exclude>**/.git*</exclude>
<exclude>**/robots.txt</exclude>
<exclude>**/*.sql</exclude>
<exclude>**/docker/**</exclude>
<exclude>**/frontend/**</exclude>
<exclude>site/content/**</exclude>
<exclude>site/layouts/**</exclude>
<exclude>site/static/**</exclude>
<exclude>site/*.toml</exclude>
<exclude>**/spring.factories</exclude>
</excludes>
</licenseSet>
</licenseSets>
<mapping>
<java>JAVADOC_STYLE</java>
<scss>JAVADOC_STYLE</scss>
</mapping>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.dash</groupId>
<artifactId>license-tool-plugin</artifactId>
<version>${license.tool.plugin.version}</version>
<executions>
<execution>
<id>license-check</id>
<goals>
<goal>license-check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- follows https://eclipse-cbi.github.io/cbi-website/best-practices/github-actions/central-portal/index.html#prerequisites -->
<id>publish</id>
<activation>
<property>
<name>!skipPublish</name>
<name>publish</name>
</property>
</activation>
<build>
@@ -557,22 +536,10 @@
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- this profile generates GPG signatures -->
<id>create_gpg_signature</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>createGPGSignature</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
@@ -584,12 +551,6 @@
<goals>
<goal>sign</goal>
</goals>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
@@ -598,6 +559,30 @@
</profile>
</profiles>
<!-- Dependencies for all hawkBit modules -->
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-junit5</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- Misc -->
@@ -735,30 +720,27 @@
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>${awaitility.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<modules>
<module>hawkbit-core</module>
<module>hawkbit-security-core</module>
<module>hawkbit-artifact</module>
<module>hawkbit-repository</module>
<module>hawkbit-rest-core</module>
<module>hawkbit-autoconfigure</module>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-junit5</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<module>hawkbit-mgmt</module>
<module>hawkbit-ddi</module>
<module>hawkbit-dmf</module>
<module>hawkbit-monolith</module>
<module>hawkbit-simple-ui</module>
<module>hawkbit-sdk</module>
<module>hawkbit-test-report</module>
</modules>
</project>