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