diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index a847fc4f..ea62ea31 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -67,7 +67,8 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build with Gradle run: > - ./gradlew publish -x test -x dockerClean -x dockerPrepare -x dockerRun -x dockerRunStatus -x dockerStop + ./gradlew publish publishToSonatype closeAndReleaseSonatypeStagingRepository + -x test -x dockerClean -x dockerPrepare -x dockerRun -x dockerRunStatus -x dockerStop -PgithubUser=${{ secrets.PUBLISH_USER_NAME }} -PgithubToken=${{ secrets.PUBLISH_KEY }} -PossrhUsername=${{ secrets.OSSRH_USER }} diff --git a/.github/workflows/update-dependency-checksums.yml b/.github/workflows/update-dependency-checksums.yml index c72e37d1..258a5496 100644 --- a/.github/workflows/update-dependency-checksums.yml +++ b/.github/workflows/update-dependency-checksums.yml @@ -26,7 +26,7 @@ jobs: with: cache-disabled: true - name: Update checksums - run: ./gradlew --write-verification-metadata sha256 + run: ./gradlew help licensee --write-verification-metadata sha256 - name: Git commit run: | git config --global user.name 'Esta Nagy' diff --git a/build.gradle b/build.gradle index 12e6d0e9..77e572a4 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,9 @@ plugins { alias(libs.plugins.versioner) alias(libs.plugins.index.scan) alias(libs.plugins.owasp.dependencycheck) + alias(libs.plugins.nexus.publish.plugin) + alias libs.plugins.cyclonedx.bom apply false + alias libs.plugins.licensee.plugin apply false } group = 'com.github.nagyesta.lowkey-vault' @@ -65,6 +68,8 @@ configure(subprojects.findAll({ apply plugin: 'signing' apply plugin: 'org.sonatype.gradle.plugins.scan' apply plugin: 'org.owasp.dependencycheck' + apply plugin: 'org.cyclonedx.bom' + apply plugin: 'app.cash.licensee' versioner.apply() @@ -150,6 +155,64 @@ configure(subprojects.findAll({ } checkstyle.toolVersion = libs.versions.checkstyle.get() + + cyclonedxBom { + includeConfigs = ["runtimeClasspath"] + skipConfigs = ["compileClasspath", "testCompileClasspath"] + skipProjects = [] + projectType = project.name.endsWith("app") ? "application" : "library" + schemaVersion = "1.5" + destination = file("build/reports") + outputName = "bom" + outputFormat = "json" + //noinspection UnnecessaryQualifiedReference + final def attachmentText = new org.cyclonedx.model.AttachmentText() + attachmentText.setText(file("${project.rootProject.projectDir}/LICENSE").readBytes().encodeBase64().toString()) + attachmentText.setEncoding("base64") + attachmentText.setContentType("text/plain") + //noinspection UnnecessaryQualifiedReference + final def license = new org.cyclonedx.model.License() + license.setName(project.rootProject.ext.licenseName) + license.setLicenseText(attachmentText) + license.setUrl(project.rootProject.ext.licenseUrl) + setLicenseChoice { + it.addLicense(license) + } + } + + licensee { + allow("Apache-2.0") + allow("MIT") + allow("MIT-0") + allow("EPL-1.0") + allow("EPL-2.0") + allow("BSD-2-Clause") + allowUrl("https://www.bouncycastle.org/licence.html") + allowUrl("https://github.com/openjdk/nashorn/blob/main/LICENSE") + allowUrl("https://github.com/swagger-api/swagger-ui") + allowUrl("http://www.eclipse.org/legal/epl-2.0") + allowUrl("http://www.eclipse.org/org/documents/edl-v10.php") + allowUrl("https://asm.ow2.io/license.html") + ignoreDependencies("org.apache.tomcat", "tomcat-servlet-api") + unusedAction("IGNORE") + } + + tasks.register('copyLegalDocs', Copy.class) { + from file("${project.rootProject.projectDir}/LICENSE") + from layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile + from layout.buildDirectory.file("reports/bom.json").get().asFile + into layout.buildDirectory.dir("resources/main/META-INF").get().asFile + rename('artifacts.json', 'dependency-licenses.json') + rename('bom.json', 'SBOM.json') + } + //noinspection ConfigurationAvoidance + tasks.copyLegalDocs.dependsOn(tasks.licensee) + tasks.copyLegalDocs.dependsOn(tasks.cyclonedxBom) + tasks.javadoc.dependsOn(tasks.copyLegalDocs) + tasks.compileTestJava.dependsOn(tasks.copyLegalDocs) + tasks.checkstyleMain.dependsOn(tasks.copyLegalDocs) + tasks.processResources.finalizedBy(tasks.copyLegalDocs) + publishing { repositories { maven { @@ -160,14 +223,6 @@ configure(subprojects.findAll({ password = rootProject.ext.gitToken } } - maven { - name = "ossrh" - url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2") - credentials { - username = rootProject.ext.ossrhUser - password = rootProject.ext.ossrhPass - } - } } } @@ -187,6 +242,15 @@ configure(subprojects.findAll({ } } +nexusPublishing { + repositories { + sonatype { + username = project.ext.ossrhUser + password = project.ext.ossrhPass + } + } +} + ossIndexAudit { username = rootProject.ext.ossIndexUser password = rootProject.ext.ossIndexPass diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8398e266..dd639b17 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,6 +31,9 @@ lombokPlugin = "8.6" springBootPlugin = "3.2.5" gitVersionerPlugin = "1.6.7" owaspPlugin = "9.1.0" +cycloneDxBomPlugin = "1.8.2" +licenseePlugin = "1.11.0" +nexusPublishPlugin = "2.0.0" [libraries] spring-boot-starter = { module = "org.springframework.boot:spring-boot-starter", version.ref = "springBoot" } @@ -118,3 +121,6 @@ docker-run = { id = "com.palantir.docker-run", version.ref = "dockerPlugin" } versioner = { id = "io.toolebox.git-versioner", version.ref = "gitVersionerPlugin" } index-scan = { id = "org.sonatype.gradle.plugins.scan", version.ref = "indexScanPlugin" } owasp-dependencycheck = { id = "org.owasp.dependencycheck", version.ref = "owaspPlugin" } +cyclonedx-bom = { id = "org.cyclonedx.bom", version.ref = "cycloneDxBomPlugin" } +licensee-plugin = { id = "app.cash.licensee", version.ref = "licenseePlugin" } +nexus-publish-plugin = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublishPlugin" } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index d4896b7c..a31b7884 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -10,12 +10,22 @@ - - - + + + - - + + + + + + + + + + + + @@ -26,62 +36,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -90,14 +44,6 @@ - - - - - - - - @@ -106,62 +52,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -170,51 +60,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -225,30 +75,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -257,30 +83,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -302,30 +104,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -334,38 +112,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -374,30 +120,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -523,11 +245,6 @@ - - - - - @@ -538,11 +255,6 @@ - - - - - @@ -588,11 +300,6 @@ - - - - - @@ -661,21 +368,6 @@ - - - - - - - - - - - - - - - @@ -685,16 +377,17 @@ - - - - + + + + + @@ -706,21 +399,6 @@ - - - - - - - - - - - - - - - @@ -730,16 +408,17 @@ - - - - + + + + + @@ -751,21 +430,6 @@ - - - - - - - - - - - - - - - @@ -775,20 +439,16 @@ - - - - + + - - - - + + @@ -796,34 +456,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -835,27 +473,15 @@ + + + - - - - - - - - - - - - - - - @@ -866,46 +492,19 @@ - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - @@ -915,20 +514,16 @@ - - - - + + - - - - + + @@ -936,11 +531,6 @@ - - - - - @@ -951,29 +541,12 @@ - - - - - - - - - - - - - - - - - - - + + @@ -991,21 +564,11 @@ - - - - - - - - - - @@ -1016,11 +579,6 @@ - - - - - @@ -1039,14 +597,6 @@ - - - - - - - - @@ -1055,22 +605,6 @@ - - - - - - - - - - - - - - - - @@ -1079,37 +613,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1118,22 +626,6 @@ - - - - - - - - - - - - - - - - @@ -1150,14 +642,6 @@ - - - - - - - - @@ -1166,56 +650,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1224,14 +663,6 @@ - - - - - - - - @@ -1240,180 +671,35 @@ - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - @@ -1440,6 +726,11 @@ + + + + + @@ -1500,14 +791,6 @@ - - - - - - - - @@ -1532,11 +815,6 @@ - - - - - @@ -1573,14 +851,6 @@ - - - - - - - - @@ -1609,11 +879,6 @@ - - - - - @@ -1637,12 +902,17 @@ - - - + + + - - + + + + + + + @@ -1661,14 +931,6 @@ - - - - - - - - @@ -1698,11 +960,6 @@ - - - - - @@ -1725,13 +982,18 @@ - - - + + + + + + + + @@ -1745,39 +1007,16 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -1807,14 +1046,6 @@ - - - - - - - - @@ -1833,24 +1064,11 @@ - - - - - - - - - - - - - @@ -1888,11 +1106,6 @@ - - - - - @@ -1909,14 +1122,6 @@ - - - - - - - - @@ -1941,22 +1146,6 @@ - - - - - - - - - - - - - - - - @@ -2047,14 +1236,6 @@ - - - - - - - - @@ -2063,50 +1244,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2115,14 +1257,6 @@ - - - - - - - - @@ -2131,30 +1265,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2163,30 +1273,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2195,30 +1281,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2227,22 +1289,6 @@ - - - - - - - - - - - - - - - - @@ -2251,60 +1297,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2313,30 +1315,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2345,30 +1323,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2377,30 +1331,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2409,30 +1339,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2441,14 +1347,6 @@ - - - - - - - - @@ -2457,22 +1355,6 @@ - - - - - - - - - - - - - - - - @@ -2481,30 +1363,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -2513,22 +1371,6 @@ - - - - - - - - - - - - - - - - @@ -2545,14 +1387,6 @@ - - - - - - - - @@ -2569,21 +1403,11 @@ - - - - - - - - - - @@ -2594,88 +1418,41 @@ - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2684,38 +1461,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -2724,26 +1469,11 @@ - - - - - - - - - - - - - - - @@ -2759,45 +1489,17 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -2808,22 +1510,6 @@ - - - - - - - - - - - - - - - - @@ -2857,22 +1543,6 @@ - - - - - - - - - - - - - - - - @@ -2881,22 +1551,6 @@ - - - - - - - - - - - - - - - - @@ -2905,22 +1559,6 @@ - - - - - - - - - - - - - - - - @@ -2929,16 +1567,6 @@ - - - - - - - - - - @@ -2959,14 +1587,6 @@ - - - - - - - - @@ -3009,14 +1629,6 @@ - - - - - - - - @@ -3025,14 +1637,6 @@ - - - - - - - - @@ -3041,21 +1645,11 @@ - - - - - - - - - - @@ -3069,6 +1663,14 @@ + + + + + + + + @@ -3119,22 +1721,6 @@ - - - - - - - - - - - - - - - - @@ -3151,22 +1737,6 @@ - - - - - - - - - - - - - - - - @@ -3188,16 +1758,6 @@ - - - - - - - - - - @@ -3221,6 +1781,11 @@ + + + + + @@ -3247,14 +1812,6 @@ - - - - - - - - @@ -3263,14 +1820,6 @@ - - - - - - - - @@ -3331,11 +1880,6 @@ - - - - - @@ -3397,14 +1941,6 @@ - - - - - - - - @@ -3413,14 +1949,6 @@ - - - - - - - - @@ -3450,14 +1978,6 @@ - - - - - - - - @@ -3494,11 +2014,6 @@ - - - - - @@ -3524,11 +2039,6 @@ - - - - - @@ -3549,11 +2059,6 @@ - - - - - @@ -3603,16 +2108,6 @@ - - - - - - - - - - @@ -3909,22 +2404,61 @@ - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3935,6 +2469,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3977,76 +2556,70 @@ - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + @@ -4057,38 +2630,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4097,38 +2638,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4153,38 +2662,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4193,38 +2670,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4233,38 +2678,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4273,41 +2686,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -4372,14 +2753,6 @@ - - - - - - - - @@ -4388,11 +2761,6 @@ - - - - - @@ -4406,22 +2774,6 @@ - - - - - - - - - - - - - - - - @@ -4438,22 +2790,6 @@ - - - - - - - - - - - - - - - - @@ -4462,22 +2798,6 @@ - - - - - - - - - - - - - - - - @@ -4486,11 +2806,6 @@ - - - - - @@ -4524,11 +2839,29 @@ + + + + + + + + + + + + + + + + + + @@ -4537,6 +2870,14 @@ + + + + + + + + @@ -4558,10 +2899,23 @@ - - - + + + + + + + + + + + + + + + + @@ -4574,6 +2928,14 @@ + + + + + + + + @@ -4590,12 +2952,22 @@ - - - + + + - - + + + + + + + + + + + + @@ -4631,16 +3003,6 @@ - - - - - - - - - - @@ -4651,16 +3013,6 @@ - - - - - - - - - - @@ -4675,9 +3027,6 @@ - - - @@ -4713,6 +3062,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4726,21 +3101,11 @@ - - - - - - - - - - @@ -4790,31 +3155,11 @@ - - - - - - - - - - - - - - - - - - - - @@ -4914,26 +3259,11 @@ - - - - - - - - - - - - - - - @@ -4949,22 +3279,19 @@ - - - - - - - - + + + - - + + + + @@ -5010,81 +3337,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5100,14 +3387,6 @@ - - - - - - - - @@ -5124,22 +3403,6 @@ - - - - - - - - - - - - - - - - @@ -5200,14 +3463,6 @@ - - - - - - - - @@ -5285,38 +3540,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5325,38 +3548,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5365,63 +3556,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5430,26 +3569,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -5537,22 +3656,6 @@ - - - - - - - - - - - - - - - - @@ -5561,19 +3664,6 @@ - - - - - - - - - - - - - @@ -5584,11 +3674,6 @@ - - - - - @@ -5597,22 +3682,6 @@ - - - - - - - - - - - - - - - - @@ -5629,39 +3698,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5672,26 +3713,11 @@ - - - - - - - - - - - - - - - @@ -5702,11 +3728,6 @@ - - - - - @@ -5733,11 +3754,6 @@ - - - - - @@ -5748,11 +3764,6 @@ - - - - - @@ -5771,51 +3782,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5841,21 +3812,11 @@ - - - - - - - - - - @@ -5864,21 +3825,11 @@ - - - - - - - - - - @@ -5887,37 +3838,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -5926,22 +3851,6 @@ - - - - - - - - - - - - - - - - @@ -5950,22 +3859,6 @@ - - - - - - - - - - - - - - - - @@ -5974,151 +3867,56 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - @@ -6129,49 +3927,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -6179,64 +3940,20 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - + + @@ -6244,109 +3961,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - + + @@ -6354,179 +3992,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - + + @@ -6534,124 +4041,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - + + @@ -6659,66 +4075,21 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -6729,31 +4100,11 @@ - - - - - - - - - - - - - - - - - - - - @@ -6764,51 +4115,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -6817,46 +4123,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -6865,26 +4131,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -6900,16 +4146,6 @@ - - - - - - - - - - @@ -6931,14 +4167,6 @@ - - - - - - - - @@ -6947,22 +4175,6 @@ - - - - - - - - - - - - - - - - diff --git a/lowkey-vault-app/build.gradle b/lowkey-vault-app/build.gradle index 4a1e6f6f..da18d537 100644 --- a/lowkey-vault-app/build.gradle +++ b/lowkey-vault-app/build.gradle @@ -64,6 +64,7 @@ jar { bootJar { archiveVersion.value(project.version as String) } +tasks.resolveMainClassName.dependsOn("copyLegalDocs") tasks.register('regenerateCertJks', Exec) { outputs.file("${project.projectDir}/src/main/resources/cert/keystore.jks")