diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 000000000..418b33e20
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -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 }}
\ No newline at end of file
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 691ba05f0..2bf11327e 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -1,6 +1,7 @@
name: Mark & close stale issues
on:
+ # enable running the workflow manually
workflow_dispatch:
schedule:
- cron: "0 0 * * *"
diff --git a/.github/workflows/trivy-scan.yml b/.github/workflows/trivy-scan.yml
index 12383274b..9557ebd56 100644
--- a/.github/workflows/trivy-scan.yml
+++ b/.github/workflows/trivy-scan.yml
@@ -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:
diff --git a/.github/workflows/verify-hibernate.yml b/.github/workflows/verify-hibernate.yml
index cc571790a..0c837f50b 100644
--- a/.github/workflows/verify-hibernate.yml
+++ b/.github/workflows/verify-hibernate.yml
@@ -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
\ No newline at end of file
diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml
index d86eeb49a..c7cf72c43 100644
--- a/.github/workflows/verify.yml
+++ b/.github/workflows/verify.yml
@@ -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
\ No newline at end of file
diff --git a/hawkbit-dependencies/pom.xml b/hawkbit-dependencies/pom.xml
new file mode 100644
index 000000000..e2a5582e9
--- /dev/null
+++ b/hawkbit-dependencies/pom.xml
@@ -0,0 +1,405 @@
+
+
+ 4.0.0
+
+ org.eclipse.hawkbit
+ hawkbit-dependencies
+ ${revision}
+ pom
+ hawkBit :: Parent
+
+
+
+ EPL-2.0
+ https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
+ Eclipse Public License - Version 2.0
+
+
+
+
+ 3.5.0
+ 2025.0.0
+ 2.8.9
+ 3.0.0
+
+
+
+
+
+ 4.0.6
+ 3.0.2
+
+
+
+ 9.2.1
+ 1.20.1
+ 3.0.0
+ 2.1.0
+ 2.19.0
+ 4.5.0
+ 1.13.1
+ 1.8.0
+
+ 5.4.0
+ 4.8.179
+ 2.29.1
+ 4.3.0
+
+
+
+ 3.5.0
+ 1.7.0
+ 3.21.0
+ 3.5.3
+ 3.5.3
+ 0.8.13
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ ${spring.boot.version}
+
+
+ org.apache.logging.log4j
+ log4j-to-slf4j
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring.boot.version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jdk8
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+
+
+ com.fasterxml.jackson.module
+ jackson-module-parameter-names
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring.cloud.version}
+ pom
+ import
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc-openapi.version}
+
+
+ org.springframework.plugin
+ spring-plugin-core
+ ${spring.plugin.core.version}
+
+
+
+
+ com.rabbitmq
+ http-client
+ ${rabbitmq.http-client.version}
+
+
+ com.cronutils
+ cron-utils
+ ${cron-utils.version}
+
+
+ org.jsoup
+ jsoup
+ ${jsoup.version}
+
+
+ javax.el
+ javax.el-api
+ ${javax.el-api.version}
+
+
+
+
+ io.protostuff
+ protostuff-core
+ ${io-protostuff.version}
+
+
+ io.protostuff
+ protostuff-runtime
+ ${io-protostuff.version}
+
+
+
+
+ cz.jirutka.rsql
+ rsql-parser
+ ${rsql-parser.version}
+
+
+
+ commons-io
+ commons-io
+ ${commons-io.version}
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons-collections4.version}
+
+
+ org.apache.commons
+ commons-text
+ ${commons-text.version}
+
+
+
+
+ io.github.classgraph
+ classgraph
+ ${classgraph.version}
+ test
+
+
+ org.springframework.amqp
+ spring-rabbit-junit
+ ${spring-amqp.version}
+ test
+
+
+ org.springframework.amqp
+ spring-rabbit-test
+ ${spring-amqp.version}
+ test
+
+
+ io.qameta.allure
+ allure-junit5
+ ${allure.version}
+ test
+
+
+ org.awaitility
+ awaitility
+ ${awaitility.version}
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ ${maven.enforcer.plugin.version}
+
+
+
+ enforce-no-snapshots
+
+ enforce
+
+
+ ${skipEnforcer}
+
+
+ 3.9
+
+
+ 17
+
+
+ No Snapshots Allowed!
+ true
+
+
+ No Snapshots Allowed!
+ false
+
+ org.eclipse.hawkbit:*
+
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ ${flatten.maven.plugin.version}
+
+ resolveCiFriendliesOnly
+ true
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+ flatten.clean
+ clean
+
+ clean
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ -Xlint:all
+ true
+ true
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+ syntax
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ ${maven.site.plugin.version}
+
+ true
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ ${maven.surefire.plugin.version}
+
+
+
+ ${project.build.directory}/allure-results
+
+
+ 650
+
+
+ false
+ true
+ ${surefire.forkcount}
+ ${jacoco.agent.ut.arg} ${test.jvm.args}
+
+
+ listener
+ io.qameta.allure.junit5.AllureJunit5
+
+
+
+ **/*Tests.java
+ **/*Test.java
+ **/*IT.java
+
+
+ **/Abstract*.java
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ ${maven.failsafe.plugin.version}
+
+ false
+ ${surefire.forkcount}
+ -Xmx1024m ${jacoco.agent.ut.arg}
+
+
+ listener
+ io.qameta.allure.junit5.AllureJunit5
+
+
+
+
+
+ integration-test
+ integration-test
+
+ integration-test
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ ${jacoco.maven.plugin.version}
+
+
+ prepare-ut-agent
+ process-test-classes
+
+ prepare-agent
+
+
+ jacoco.agent.ut.arg
+
+
+
+ prepare-it-agent
+ pre-integration-test
+
+ prepare-agent-integration
+
+
+ jacoco.agent.it.arg
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml b/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml
index 4afad3b4c..fa61f26af 100644
--- a/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml
+++ b/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml
@@ -70,6 +70,10 @@
${project.version}
compile
+
+ org.awaitility
+ awaitility
+ compile
+
-
\ No newline at end of file
diff --git a/hawkbit-repository/hawkbit-repository-test/pom.xml b/hawkbit-repository/hawkbit-repository-test/pom.xml
index 57724960e..f118bdc03 100644
--- a/hawkbit-repository/hawkbit-repository-test/pom.xml
+++ b/hawkbit-repository/hawkbit-repository-test/pom.xml
@@ -132,6 +132,7 @@
org.awaitility
awaitility
+ compile
diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java
index d2ce2a893..239ea3442 100644
--- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java
+++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java
@@ -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;
diff --git a/pom.xml b/pom.xml
index 1e6d8eb11..133a21505 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,8 +41,7 @@
as libraries in other projects might be compiled with a different, lower, java version. -->
17
- true
-
+
3.5.0
2025.0.0
2.8.9
@@ -76,23 +75,22 @@
3.5.0
1.7.0
- 2.1.0
3.21.0
- 1.1.0
- 5.0.0
-
3.5.3
3.5.3
0.8.13
+ 1.1.0
+ 5.0.0
0.7.0
3.2.7
scm:git:git@github.com:eclipse/hawkbit.git
- scm:git:https://github.com/eclipse-hawkbit/hawkbit.git
+
+ scm:git:https://github.com/eclipse-hawkbit/hawkbit.git
https://github.com/eclipse-hawkbit/hawkbit.git
@@ -118,40 +116,21 @@
- true
+ false
true
iot.hawkbit
- ${project.build.directory}/dash/summary
+ ${project.build.directory}/.3rd-party/DEPENDENCIES
- ${project.build.directory}/dash/review-summary
+ ${project.build.directory}/.3rd-party/DEPENDENCIES_REVIEW
org.eclipse,org.junit
-
+
1
-
- hawkbit-core
- hawkbit-security-core
- hawkbit-artifact
- hawkbit-repository
- hawkbit-rest-core
- hawkbit-autoconfigure
-
- hawkbit-mgmt
- hawkbit-ddi
- hawkbit-dmf
- hawkbit-monolith
-
- hawkbit-simple-ui
- hawkbit-sdk
-
- hawkbit-test-report
-
-
${release.scm.connection}
${release.scm.developerConnection}
@@ -219,14 +198,6 @@
-
-
- ossrh
- hawkBit Repository - Snapshots
- https://central.sonatype.com/repository/maven-snapshots/
-
-
-
dash-licenses
@@ -236,6 +207,15 @@
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+
+
org.apache.maven.plugins
maven-compiler-plugin
@@ -244,32 +224,11 @@
org.apache.maven.plugins
maven-source-plugin
-
- org.apache.maven.plugins
- maven-enforcer-plugin
-
-
- org.codehaus.mojo
- flatten-maven-plugin
-
-
- org.apache.maven.plugins
- maven-scm-plugin
-
org.codehaus.mojo
versions-maven-plugin
-
- com.mycila
- license-maven-plugin
-
-
- org.eclipse.dash
- license-tool-plugin
-
-
org.jacoco
jacoco-maven-plugin
@@ -278,60 +237,45 @@
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- -Xlint:all
- true
- true
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
-
- syntax
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
-
-
- attach-sources
-
- jar
-
-
-
-
-
org.apache.maven.plugins
maven-enforcer-plugin
${maven.enforcer.plugin.version}
-
- enforce-no-snapshots
+ enforce-maven-and-java
enforce
- ${snapshotDependencyAllowed}
-
- No Snapshots Allowed!
-
-
- No Snapshots Allowed!
-
3.9
+
+ 17
+
+
+
+
+
+ enforce-no-snapshots-deps
+
+ enforce
+
+
+
+
+ No Snapshots Allowed!
+ true
+
+
+ No Snapshots Allowed!
+ false
+
+ org.eclipse.hawkbit:*
+
+
@@ -362,14 +306,36 @@
+
org.apache.maven.plugins
- maven-scm-plugin
- ${maven.scm.plugin.version}
+ maven-compiler-plugin
- ${project.version}
+ -Xlint:all
+ true
+ true
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+ syntax
+
+
+
org.apache.maven.plugins
maven-site-plugin
@@ -380,77 +346,6 @@
-
- com.mycila
- license-maven-plugin
- ${license.maven.plugin.version}
-
-
-
- licenses/LICENSE_HEADER_TEMPLATE.txt
-
- licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_23.txt
- licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_24.txt
- licenses/LICENSE_HEADER_TEMPLATE_BOSCH_15.txt
- licenses/LICENSE_HEADER_TEMPLATE_BOSCH_18.txt
- licenses/LICENSE_HEADER_TEMPLATE_BOSCH_19.txt
- licenses/LICENSE_HEADER_TEMPLATE_BOSCH_20.txt
- licenses/LICENSE_HEADER_TEMPLATE_BOSCH_21.txt
- licenses/LICENSE_HEADER_TEMPLATE_BOSCH_22.txt
- licenses/LICENSE_HEADER_TEMPLATE_BOSCH_23.txt
- licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_18.txt
- licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_20.txt
- licenses/LICENSE_HEADER_TEMPLATE_SIEMENS.txt
- licenses/LICENSE_HEADER_TEMPLATE_SIEMENS_18.txt
- licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_19.txt
- licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_20.txt
- licenses/LICENSE_HEADER_TEMPLATE_KIWIGRID_19.txt
- licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt
- licenses/LICENSE_HEADER_TEMPLATE_BLUEZONE_25.txt
-
-
- .3rd-party/**
- .git*
- .github/**
- licenses/LICENSE*
- eclipse_codeformatter.xml
- intellij_codeformatter.xml
- **/banner.txt
- **/helm/**
- **/README
- **/.git*
- **/robots.txt
- **/*.sql
- **/docker/**
- **/frontend/**
- site/content/**
- site/layouts/**
- site/static/**
- site/*.toml
- **/spring.factories
-
-
-
-
- JAVADOC_STYLE
- JAVADOC_STYLE
-
-
-
-
- org.eclipse.dash
- license-tool-plugin
- ${license.tool.plugin.version}
-
-
- license-check
-
- license-check
-
-
-
-
-
org.apache.maven.plugins
maven-surefire-plugin
@@ -458,7 +353,8 @@
- ${project.build.directory}/allure-results
+
+ ${project.build.directory}/allure-results
650
@@ -542,10 +438,93 @@
+ license
+
+
+ license
+
+
+
+
+
+ com.mycila
+ license-maven-plugin
+ ${license.maven.plugin.version}
+
+
+
+ licenses/LICENSE_HEADER_TEMPLATE.txt
+
+ licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_23.txt
+ licenses/LICENSE_HEADER_TEMPLATE_CONTRIBUTORS_24.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_15.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_18.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_19.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_20.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_21.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_22.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_23.txt
+ licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_18.txt
+ licenses/LICENSE_HEADER_TEMPLATE_MICROSOFT_20.txt
+ licenses/LICENSE_HEADER_TEMPLATE_SIEMENS.txt
+ licenses/LICENSE_HEADER_TEMPLATE_SIEMENS_18.txt
+ licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_19.txt
+ licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_20.txt
+ licenses/LICENSE_HEADER_TEMPLATE_KIWIGRID_19.txt
+ licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt
+ licenses/LICENSE_HEADER_TEMPLATE_BLUEZONE_25.txt
+
+
+ .3rd-party/**
+ .git*
+ .github/**
+ licenses/LICENSE*
+ eclipse_codeformatter.xml
+ intellij_codeformatter.xml
+ **/banner.txt
+ **/helm/**
+ **/README
+ **/.git*
+ **/robots.txt
+ **/*.sql
+ **/docker/**
+ **/frontend/**
+ site/content/**
+ site/layouts/**
+ site/static/**
+ site/*.toml
+ **/spring.factories
+
+
+
+
+ JAVADOC_STYLE
+ JAVADOC_STYLE
+
+
+
+
+ org.eclipse.dash
+ license-tool-plugin
+ ${license.tool.plugin.version}
+
+
+ license-check
+
+ license-check
+
+
+
+
+
+
+
+
+
publish
- !skipPublish
+ publish
@@ -557,22 +536,10 @@
true
central
+ true
+ published
-
-
-
-
-
- create_gpg_signature
-
- false
-
- createGPGSignature
-
-
-
-
org.apache.maven.plugins
maven-gpg-plugin
@@ -584,12 +551,6 @@
sign
-
-
- --pinentry-mode
- loopback
-
-
@@ -598,6 +559,30 @@
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ io.qameta.allure
+ allure-junit5
+ test
+
+
+
@@ -735,30 +720,27 @@
org.awaitility
awaitility
${awaitility.version}
+ test
-
-
- org.slf4j
- slf4j-api
-
-
- org.projectlombok
- lombok
- true
-
+
+ hawkbit-core
+ hawkbit-security-core
+ hawkbit-artifact
+ hawkbit-repository
+ hawkbit-rest-core
+ hawkbit-autoconfigure
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.qameta.allure
- allure-junit5
- test
-
-
-
+ hawkbit-mgmt
+ hawkbit-ddi
+ hawkbit-dmf
+ hawkbit-monolith
+
+ hawkbit-simple-ui
+ hawkbit-sdk
+
+ hawkbit-test-report
+
+
\ No newline at end of file