From c2414e1f615f2528557e96c2a709764afa6cb044 Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Sat, 8 Mar 2025 21:45:02 +0000 Subject: [PATCH 01/11] Update config and remove unused proto imports --- .github/workflows/build-on-ubuntu.yml | 38 ++ .github/workflows/build-on-windows.yml | 36 ++ .github/workflows/ensure-reports-updated.yml | 25 ++ .../workflows/gradle-wrapper-validation.yml | 4 +- .github/workflows/increment-guard.yml | 29 ++ .github/workflows/publish.yml | 63 +++ ...move-obsolete-artifacts-from-packages.yaml | 73 +++ .gitignore | 9 +- .idea/codeStyles/Project.xml | 5 +- .idea/copyright/TeamDev_Open_Source.xml | 2 +- .idea/copyright/profiles_settings.xml | 8 +- .idea/inspectionProfiles/Project_Default.xml | 14 +- .idea/kotlinc.xml | 8 +- .idea/misc.xml | 9 +- .lift.toml | 1 - README.md | 62 +-- build.gradle.kts | 52 ++- buildSrc/build.gradle.kts | 169 ++++--- buildSrc/src/main/kotlin/BuildExtensions.kt | 166 +++++-- buildSrc/src/main/kotlin/BuildSettings.kt | 13 +- .../src/main/kotlin/DependencyResolution.kt | 132 ++++-- buildSrc/src/main/kotlin/DokkaExts.kt | 102 +++-- buildSrc/src/main/kotlin/Strings.kt | 50 +++ .../main/kotlin/compile-protobuf.gradle.kts | 8 +- .../src/main/kotlin/config-tester.gradle.kts | 10 +- .../kotlin/detekt-code-analysis.gradle.kts | 7 +- .../src/main/kotlin/dokka-for-java.gradle.kts | 11 +- .../main/kotlin/dokka-for-kotlin.gradle.kts | 11 +- .../build}/AnimalSniffer.kt | 9 +- .../io/spine/dependency/build/CheckStyle.kt | 46 ++ .../build}/CheckerFramework.kt | 15 +- .../dependency => dependency/build}/Dokka.kt | 28 +- .../build}/ErrorProne.kt | 33 +- .../build}/FindBugs.kt | 20 +- .../build}/GradleDoctor.kt | 9 +- .../kotlin/io/spine/dependency/build/Ksp.kt | 43 ++ .../spine/dependency/build/LicenseReport.kt | 40 ++ .../build}/OsDetector.kt | 11 +- .../kotlin/io/spine/dependency/build/Pmd.kt | 42 ++ .../JavaJwt.kt => dependency/lib/Aedile.kt} | 16 +- .../lib}/ApacheHttp.kt | 8 +- .../lib}/AppEngine.kt | 12 +- .../kotlin/io/spine/dependency/lib/Asm.kt | 43 ++ .../dependency => dependency/lib}/Auto.kt | 28 +- .../lib}/BouncyCastle.kt | 8 +- .../io/spine/dependency/lib/Caffeine.kt | 41 ++ .../CheckStyle.kt => dependency/lib/Clikt.kt} | 14 +- .../lib}/CommonsCli.kt | 11 +- .../lib}/CommonsCodec.kt | 10 +- .../lib}/CommonsLogging.kt | 11 +- .../lib/Coroutines.kt} | 27 +- .../dependency => dependency/lib}/Firebase.kt | 10 +- .../dependency => dependency/lib}/Flogger.kt | 20 +- .../lib}/GoogleApis.kt | 12 +- .../lib}/GoogleCloud.kt | 8 +- .../dependency => dependency/lib}/Grpc.kt | 34 +- .../io/spine/dependency/lib/GrpcKotlin.kt | 43 ++ .../dependency => dependency/lib}/Gson.kt | 13 +- .../dependency => dependency/lib}/Guava.kt | 17 +- .../lib}/HttpClient.kt | 18 +- .../io/spine/dependency/lib/IntelliJ.kt | 89 ++++ .../dependency => dependency/lib}/J2ObjC.kt | 28 +- .../dependency => dependency/lib}/Jackson.kt | 34 +- .../io/spine/dependency/lib/JavaDiffUtils.kt | 42 ++ .../kotlin/io/spine/dependency/lib/JavaJwt.kt | 46 ++ .../dependency => dependency/lib}/JavaPoet.kt | 13 +- .../dependency => dependency/lib}/JavaX.kt | 13 +- .../dependency => dependency/lib}/Klaxon.kt | 11 +- .../kotlin/io/spine/dependency/lib/Kotlin.kt | 90 ++++ .../io/spine/dependency/lib/KotlinPoet.kt | 35 ++ .../lib}/KotlinSemver.kt | 10 +- .../kotlin/io/spine/dependency/lib/KotlinX.kt | 44 ++ .../kotlin/io/spine/dependency/lib/Log4j2.kt | 42 ++ .../dependency => dependency/lib}/Netty.kt | 22 +- .../kotlin/io/spine/dependency/lib/Okio.kt | 38 ++ .../kotlin/io/spine/dependency/lib/Plexus.kt | 48 ++ .../dependency => dependency/lib}/Protobuf.kt | 44 +- .../dependency => dependency/lib}/Roaster.kt | 23 +- .../dependency => dependency/lib}/Slf4J.kt | 21 +- .../spine/dependency/local/ArtifactVersion.kt | 137 ++++++ .../kotlin/io/spine/dependency/local/Base.kt | 42 ++ .../io/spine/dependency/local/BaseTypes.kt | 40 ++ .../Plexus.kt => dependency/local/Change.kt} | 20 +- .../io/spine/dependency/local/CoreJava.kt | 48 ++ .../io/spine/dependency/local/Logging.kt | 57 +++ .../io/spine/dependency/local/McJava.kt | 79 ++++ .../spine/dependency/local/ModelCompiler.kt | 40 ++ .../io/spine/dependency/local/ProtoData.kt | 179 ++++++++ .../io/spine/dependency/local/ProtoTap.kt | 46 ++ .../io/spine/dependency/local/Reflect.kt | 40 ++ .../kotlin/io/spine/dependency/local/Spine.kt | 117 +++++ .../io/spine/dependency/local/TestLib.kt | 40 ++ .../kotlin/io/spine/dependency/local/Text.kt | 40 ++ .../kotlin/io/spine/dependency/local/Time.kt | 42 ++ .../io/spine/dependency/local/ToolBase.kt | 46 ++ .../local}/Validation.kt | 32 +- .../dependency => dependency/test}/AssertK.kt | 13 +- .../io/spine/dependency/test/Hamcrest.kt | 40 ++ .../dependency => dependency/test}/JUnit.kt | 39 +- .../Pmd.kt => dependency/test/Jacoco.kt} | 17 +- .../dependency => dependency/test}/Kotest.kt | 11 +- .../dependency/test/KotlinCompileTesting.kt | 40 ++ .../dependency => dependency/test}/Kover.kt | 9 +- .../Okio.kt => dependency/test/OpenTest4J.kt} | 19 +- .../io/spine/dependency/test/SystemLambda.kt | 35 ++ .../test}/TestKitTruth.kt | 19 +- .../dependency => dependency/test}/Truth.kt | 15 +- .../markup => docs}/MarkdownDocument.kt | 6 +- .../io/spine/{internal => }/gradle/Build.kt | 6 +- .../io/spine/{internal => }/gradle/Clean.kt | 6 +- .../{internal => }/gradle/ConfigTester.kt | 6 +- .../gradle/ProjectExtensions.kt | 15 +- .../spine/{internal => }/gradle/RepoSlug.kt | 6 +- .../{internal => }/gradle/Repositories.kt | 22 +- .../spine/{internal => }/gradle/RunBuild.kt | 6 +- .../spine/{internal => }/gradle/RunGradle.kt | 6 +- .../io/spine/{internal => }/gradle/Runtime.kt | 45 +- .../{internal => }/gradle/StringExtensions.kt | 6 +- .../spine/{internal => }/gradle/TaskName.kt | 6 +- .../{internal => }/gradle/UpdateJournal.kt | 10 +- .../{internal => }/gradle/VersionWriter.kt | 6 +- .../spine/{internal => }/gradle/base/Tasks.kt | 10 +- .../gradle/checkstyle/CheckStyleConfig.kt | 8 +- .../{internal => }/gradle/dart/DartContext.kt | 6 +- .../gradle/dart/DartEnvironment.kt | 6 +- .../gradle/dart/DartExtension.kt | 10 +- .../gradle/dart/plugin/DartPlugins.kt | 14 +- .../gradle/dart/plugin/Protobuf.kt | 10 +- .../{internal => }/gradle/dart/task/Build.kt | 22 +- .../gradle/dart/task/DartTasks.kt | 22 +- .../gradle/dart/task/IntegrationTest.kt | 19 +- .../gradle/dart/task/Publish.kt | 24 +- .../io/spine/gradle/dokka/DokkaExtensions.kt | 48 ++ .../gradle/dokka/TaskContainerExtensions.kt | 36 ++ .../{internal => }/gradle/fs/LazyTempPath.kt | 6 +- .../spine/{internal => }/gradle/git/Branch.kt | 6 +- .../{internal => }/gradle/git/Repository.kt | 48 +- .../{internal => }/gradle/git/UserInfo.kt | 6 +- .../gradle/github/pages/AuthorEmail.kt | 6 +- .../github/pages/RepositoryExtensions.kt | 14 +- .../gradle/github/pages/SshKey.kt | 8 +- .../gradle/github/pages/TaskName.kt | 6 +- .../gradle/github/pages/Update.kt | 30 +- .../gradle/github/pages/UpdateGitHubPages.kt | 20 +- .../pages/UpdateGitHubPagesExtension.kt | 8 +- .../spine/{internal => }/gradle/java/Tasks.kt | 6 +- .../{internal => }/gradle/javac/ErrorProne.kt | 7 +- .../{internal => }/gradle/javac/Javac.kt | 6 +- .../{internal => }/gradle/javadoc/Encoding.kt | 6 +- .../gradle/javadoc/ExcludeInternalDoclet.kt | 20 +- .../gradle/javadoc/JavadocConfig.kt | 6 +- .../gradle/javadoc/JavadocTag.kt | 6 +- .../gradle/javadoc/TaskContainerExtensions.kt | 6 +- .../gradle/javascript/JsContext.kt | 11 +- .../gradle/javascript/JsEnvironment.kt | 6 +- .../gradle/javascript/JsExtension.kt | 10 +- .../gradle/javascript/plugin/Idea.kt | 6 +- .../gradle/javascript/plugin/JsPlugins.kt | 14 +- .../gradle/javascript/plugin/McJs.kt | 6 +- .../gradle/javascript/plugin/Protobuf.kt | 10 +- .../gradle/javascript/task/Assemble.kt | 26 +- .../gradle/javascript/task/Check.kt | 24 +- .../gradle/javascript/task/Clean.kt | 20 +- .../gradle/javascript/task/IntegrationTest.kt | 19 +- .../gradle/javascript/task/JsTasks.kt | 22 +- .../gradle/javascript/task/LicenseReport.kt | 19 +- .../gradle/javascript/task/Publish.kt | 26 +- .../gradle/javascript/task/Webpack.kt | 22 +- .../gradle/kotlin/KotlinConfig.kt | 18 +- .../gradle/protobuf/ProtoTaskExtensions.kt | 415 ++++++++++++++++++ .../gradle/publish/CheckVersionIncrement.kt | 30 +- .../gradle/publish/CloudArtifactRegistry.kt | 10 +- .../gradle/publish/CloudRepo.kt | 10 +- .../gradle/publish/GitHubPackages.kt | 13 +- .../gradle/publish/IncrementGuard.kt | 21 +- .../{internal => }/gradle/publish/JarDsl.kt | 6 +- .../gradle/publish/ProtoExts.kt | 8 +- .../gradle/publish/Publications.kt | 60 ++- .../gradle/publish/PublishingExts.kt | 32 +- .../gradle/publish/PublishingRepos.kt | 10 +- .../gradle/publish/SpinePublishing.kt | 68 ++- .../gradle/report/coverage/CodebaseFilter.kt | 8 +- .../gradle/report/coverage/FileExtension.kt | 6 +- .../gradle/report/coverage/FileExtensions.kt | 22 +- .../gradle/report/coverage/FileFilter.kt | 6 +- .../gradle/report/coverage/JacocoConfig.kt | 60 ++- .../gradle/report/coverage/PathMarker.kt | 6 +- .../gradle/report/coverage/TaskName.kt | 8 +- .../gradle/report/license/Configuration.kt | 6 +- .../gradle/report/license/LicenseReporter.kt | 23 +- .../report/license/MarkdownReportRenderer.kt | 13 +- .../report/license/ModuleDataExtensions.kt | 12 +- .../gradle/report/license/Paths.kt | 8 +- .../report/license/ProjectDependencies.kt | 8 +- .../gradle/report/license/Tasks.kt | 6 +- .../gradle/report/license/Template.kt | 10 +- .../gradle/report/pom/DependencyScope.kt | 6 +- .../gradle/report/pom/DependencyWriter.kt | 34 +- .../gradle/report/pom/InceptionYear.kt | 6 +- .../gradle/report/pom/MarkupExtensions.kt | 6 +- .../gradle/report/pom/ModuleDependency.kt | 29 +- .../gradle/report/pom/PomFormatting.kt | 6 +- .../gradle/report/pom/PomGenerator.kt | 28 +- .../gradle/report/pom/PomXmlWriter.kt | 10 +- .../gradle/report/pom/ProjectMetadata.kt | 6 +- .../gradle/report/pom/ScopedDependency.kt | 16 +- .../gradle/report/pom/SpineLicense.kt | 6 +- .../{internal => }/gradle/testing/Logging.kt | 6 +- .../gradle/testing/Multiproject.kt | 10 +- .../{internal => }/gradle/testing/Tasks.kt | 10 +- .../io/spine/internal/dependency/Kotlin.kt | 56 --- .../io/spine/internal/dependency/Spine.kt | 148 ------- .../gradle/protobuf/ProtoTaskExtensions.kt | 295 ------------- ...radle.kts => jacoco-kotlin-jvm.gradle.kts} | 24 +- ...odule.gradle.kts => jvm-module.gradle.kts} | 85 +++- .../main/kotlin/kotlin-jvm-module.gradle.kts | 73 --- .../src/main/kotlin/pmd-settings.gradle.kts | 6 +- .../src/main/kotlin/write-manifest.gradle.kts | 13 +- config | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 61574 -> 43705 bytes gradle/wrapper/gradle-wrapper.properties | 29 +- gradlew | 55 ++- gradlew.bat | 22 +- .../managementofprojects/my_tasks_view.proto | 5 +- .../project_commands.proto | 1 - .../managementofprojects/project_events.proto | 1 - .../managementofprojects/rich_text.proto | 2 +- .../speed/managementofprojects/roles.proto | 6 +- .../speed/managementofprojects/task.proto | 2 - .../managementofprojects/task_commands.proto | 1 - .../managementofprojects/task_events.proto | 4 +- .../task_rejections.proto | 6 - .../managementofprojects/user_commands.proto | 2 - .../managementofprojects/user_events.proto | 2 - .../user_rejections.proto | 3 - .../buildtool/speed/pm/my_tasks_view.proto | 1 - .../buildtool/speed/pm/project_commands.proto | 1 - .../buildtool/speed/pm/project_events.proto | 1 - .../spine/buildtool/speed/pm/rich_text.proto | 2 +- .../spine/buildtool/speed/pm/roles.proto | 6 +- .../proto/spine/buildtool/speed/pm/task.proto | 2 - .../buildtool/speed/pm/task_commands.proto | 1 - .../buildtool/speed/pm/task_events.proto | 2 - .../buildtool/speed/pm/task_rejections.proto | 6 - .../buildtool/speed/pm/user_commands.proto | 2 - .../buildtool/speed/pm/user_events.proto | 2 - .../buildtool/speed/pm/user_rejections.proto | 3 - .../speed/pmanag/my_tasks_view.proto | 1 - .../speed/pmanag/project_commands.proto | 1 - .../speed/pmanag/project_events.proto | 1 - .../buildtool/speed/pmanag/rich_text.proto | 2 +- .../spine/buildtool/speed/pmanag/roles.proto | 6 +- .../spine/buildtool/speed/pmanag/task.proto | 2 - .../speed/pmanag/task_commands.proto | 1 - .../buildtool/speed/pmanag/task_events.proto | 2 - .../speed/pmanag/task_rejections.proto | 6 - .../speed/pmanag/user_commands.proto | 2 - .../buildtool/speed/pmanag/user_events.proto | 2 - .../speed/pmanag/user_rejections.proto | 3 - .../speed/prjcts/my_tasks_view.proto | 1 - .../speed/prjcts/project_commands.proto | 1 - .../speed/prjcts/project_events.proto | 1 - .../buildtool/speed/prjcts/rich_text.proto | 2 +- .../spine/buildtool/speed/prjcts/roles.proto | 6 +- .../spine/buildtool/speed/prjcts/task.proto | 2 - .../speed/prjcts/task_commands.proto | 1 - .../buildtool/speed/prjcts/task_events.proto | 2 - .../speed/prjcts/task_rejections.proto | 6 - .../speed/prjcts/user_commands.proto | 2 - .../buildtool/speed/prjcts/user_events.proto | 2 - .../speed/prjcts/user_rejections.proto | 3 - .../speed/prjmgt/my_tasks_view.proto | 1 - .../speed/prjmgt/project_commands.proto | 1 - .../speed/prjmgt/project_events.proto | 1 - .../buildtool/speed/prjmgt/rich_text.proto | 2 +- .../spine/buildtool/speed/prjmgt/roles.proto | 6 +- .../spine/buildtool/speed/prjmgt/task.proto | 2 - .../speed/prjmgt/task_commands.proto | 1 - .../buildtool/speed/prjmgt/task_events.proto | 2 - .../speed/prjmgt/task_rejections.proto | 6 - .../speed/prjmgt/user_commands.proto | 2 - .../buildtool/speed/prjmgt/user_events.proto | 2 - .../speed/prjmgt/user_rejections.proto | 3 - .../buildtool/speed/prmn/my_tasks_view.proto | 1 - .../speed/prmn/project_commands.proto | 1 - .../buildtool/speed/prmn/project_events.proto | 1 - .../buildtool/speed/prmn/rich_text.proto | 2 +- .../spine/buildtool/speed/prmn/task.proto | 2 - .../speed/prmn/task_rejections.proto | 6 - .../buildtool/speed/prmn/user_commands.proto | 2 - .../buildtool/speed/prmn/user_events.proto | 2 - .../speed/prmn/user_rejections.proto | 3 - .../speed/projectman/rich_text.proto | 2 +- .../buildtool/speed/projectman/task.proto | 1 - .../spine/buildtool/speed/promag/task.proto | 1 - 295 files changed, 4678 insertions(+), 2048 deletions(-) create mode 100644 .github/workflows/build-on-ubuntu.yml create mode 100644 .github/workflows/build-on-windows.yml create mode 100644 .github/workflows/ensure-reports-updated.yml create mode 100644 .github/workflows/increment-guard.yml create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/remove-obsolete-artifacts-from-packages.yaml delete mode 100644 .lift.toml create mode 100644 buildSrc/src/main/kotlin/Strings.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/build}/AnimalSniffer.kt (88%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/build/CheckStyle.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/build}/CheckerFramework.kt (80%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/build}/Dokka.kt (73%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/build}/ErrorProne.kt (66%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/build}/FindBugs.kt (63%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/build}/GradleDoctor.kt (87%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/build/Ksp.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/build/LicenseReport.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/build}/OsDetector.kt (86%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/build/Pmd.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency/JavaJwt.kt => dependency/lib/Aedile.kt} (76%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/ApacheHttp.kt (88%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/AppEngine.kt (84%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/Asm.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Auto.kt (71%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/BouncyCastle.kt (88%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/Caffeine.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency/CheckStyle.kt => dependency/lib/Clikt.kt} (80%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/CommonsCli.kt (83%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/CommonsCodec.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/CommonsLogging.kt (80%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency/ProtoData.kt => dependency/lib/Coroutines.kt} (66%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Firebase.kt (83%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Flogger.kt (80%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/GoogleApis.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/GoogleCloud.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Grpc.kt (56%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/GrpcKotlin.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Gson.kt (79%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Guava.kt (77%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/HttpClient.kt (85%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/IntelliJ.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/J2ObjC.kt (66%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Jackson.kt (69%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaDiffUtils.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/JavaJwt.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/JavaPoet.kt (79%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/JavaX.kt (77%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Klaxon.kt (83%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/Kotlin.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/KotlinPoet.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/KotlinSemver.kt (85%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/KotlinX.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/Log4j2.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Netty.kt (67%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/Okio.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/lib/Plexus.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Protobuf.kt (61%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Roaster.kt (65%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/lib}/Slf4J.kt (74%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/ArtifactVersion.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/BaseTypes.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency/Plexus.kt => dependency/local/Change.kt} (71%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJava.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/Logging.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/McJava.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/ModelCompiler.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/ProtoData.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/ProtoTap.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/Reflect.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/Spine.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/Text.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/local}/Validation.kt (60%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/test}/AssertK.kt (83%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/test/Hamcrest.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/test}/JUnit.kt (60%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency/Pmd.kt => dependency/test/Jacoco.kt} (78%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/test}/Kotest.kt (90%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/test/KotlinCompileTesting.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/test}/Kover.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency/Okio.kt => dependency/test/OpenTest4J.kt} (73%) create mode 100644 buildSrc/src/main/kotlin/io/spine/dependency/test/SystemLambda.kt rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/test}/TestKitTruth.kt (70%) rename buildSrc/src/main/kotlin/io/spine/{internal/dependency => dependency/test}/Truth.kt (75%) rename buildSrc/src/main/kotlin/io/spine/{internal/markup => docs}/MarkdownDocument.kt (96%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/Build.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/Clean.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/ConfigTester.kt (98%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/ProjectExtensions.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/RepoSlug.kt (94%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/Repositories.kt (94%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/RunBuild.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/RunGradle.kt (98%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/Runtime.kt (73%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/StringExtensions.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/TaskName.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/UpdateJournal.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/VersionWriter.kt (97%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/base/Tasks.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/checkstyle/CheckStyleConfig.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/DartContext.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/DartEnvironment.kt (97%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/DartExtension.kt (96%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/plugin/DartPlugins.kt (89%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/plugin/Protobuf.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/task/Build.kt (89%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/task/DartTasks.kt (85%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/task/IntegrationTest.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/dart/task/Publish.kt (89%) create mode 100644 buildSrc/src/main/kotlin/io/spine/gradle/dokka/DokkaExtensions.kt create mode 100644 buildSrc/src/main/kotlin/io/spine/gradle/dokka/TaskContainerExtensions.kt rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/fs/LazyTempPath.kt (96%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/git/Branch.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/git/Repository.kt (85%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/git/UserInfo.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/github/pages/AuthorEmail.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/github/pages/RepositoryExtensions.kt (87%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/github/pages/SshKey.kt (95%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/github/pages/TaskName.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/github/pages/Update.kt (83%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/github/pages/UpdateGitHubPages.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/github/pages/UpdateGitHubPagesExtension.kt (94%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/java/Tasks.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javac/ErrorProne.kt (94%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javac/Javac.kt (94%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javadoc/Encoding.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javadoc/ExcludeInternalDoclet.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javadoc/JavadocConfig.kt (97%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javadoc/JavadocTag.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javadoc/TaskContainerExtensions.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/JsContext.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/JsEnvironment.kt (98%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/JsExtension.kt (95%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/plugin/Idea.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/plugin/JsPlugins.kt (88%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/plugin/McJs.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/plugin/Protobuf.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/Assemble.kt (88%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/Check.kt (89%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/Clean.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/IntegrationTest.kt (89%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/JsTasks.kt (85%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/LicenseReport.kt (84%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/Publish.kt (87%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/javascript/task/Webpack.kt (85%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/kotlin/KotlinConfig.kt (87%) create mode 100644 buildSrc/src/main/kotlin/io/spine/gradle/protobuf/ProtoTaskExtensions.kt rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/CheckVersionIncrement.kt (80%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/CloudArtifactRegistry.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/CloudRepo.kt (89%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/GitHubPackages.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/IncrementGuard.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/JarDsl.kt (97%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/ProtoExts.kt (94%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/Publications.kt (78%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/PublishingExts.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/PublishingRepos.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/publish/SpinePublishing.kt (87%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/coverage/CodebaseFilter.kt (94%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/coverage/FileExtension.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/coverage/FileExtensions.kt (85%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/coverage/FileFilter.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/coverage/JacocoConfig.kt (83%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/coverage/PathMarker.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/coverage/TaskName.kt (86%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/Configuration.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/LicenseReporter.kt (88%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/MarkdownReportRenderer.kt (84%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/ModuleDataExtensions.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/Paths.kt (89%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/ProjectDependencies.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/Tasks.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/license/Template.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/DependencyScope.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/DependencyWriter.kt (84%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/InceptionYear.kt (92%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/MarkupExtensions.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/ModuleDependency.kt (79%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/PomFormatting.kt (96%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/PomGenerator.kt (82%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/PomXmlWriter.kt (91%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/ProjectMetadata.kt (96%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/ScopedDependency.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/report/pom/SpineLicense.kt (93%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/testing/Logging.kt (95%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/testing/Multiproject.kt (90%) rename buildSrc/src/main/kotlin/io/spine/{internal => }/gradle/testing/Tasks.kt (93%) delete mode 100644 buildSrc/src/main/kotlin/io/spine/internal/dependency/Kotlin.kt delete mode 100644 buildSrc/src/main/kotlin/io/spine/internal/dependency/Spine.kt delete mode 100644 buildSrc/src/main/kotlin/io/spine/internal/gradle/protobuf/ProtoTaskExtensions.kt rename buildSrc/src/main/kotlin/{jacoco-kmm-jvm.gradle.kts => jacoco-kotlin-jvm.gradle.kts} (74%) rename buildSrc/src/main/kotlin/{java-module.gradle.kts => jvm-module.gradle.kts} (64%) delete mode 100644 buildSrc/src/main/kotlin/kotlin-jvm-module.gradle.kts diff --git a/.github/workflows/build-on-ubuntu.yml b/.github/workflows/build-on-ubuntu.yml new file mode 100644 index 0000000..f8c2493 --- /dev/null +++ b/.github/workflows/build-on-ubuntu.yml @@ -0,0 +1,38 @@ +name: Build under Ubuntu + +on: push + +jobs: + build: + name: Build under Ubuntu + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: 'true' + + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: zulu + cache: gradle + + - name: Build project and run tests + shell: bash + run: ./gradlew build --stacktrace + + # See: https://github.com/marketplace/actions/junit-report-action + - name: Publish Test Report + uses: mikepenz/action-junit-report@v4.0.3 + if: always() # always run even if the previous step fails + with: + report_paths: '**/build/test-results/**/TEST-*.xml' + require_tests: true # will fail workflow if test reports not found + + - name: Upload code coverage report + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false + verbose: true diff --git a/.github/workflows/build-on-windows.yml b/.github/workflows/build-on-windows.yml new file mode 100644 index 0000000..4e6b57f --- /dev/null +++ b/.github/workflows/build-on-windows.yml @@ -0,0 +1,36 @@ +name: Build under Windows + +on: pull_request + +jobs: + build: + name: Build under Windows + runs-on: windows-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: 'true' + + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: zulu + cache: gradle + + # See: https://github.com/al-cheb/configure-pagefile-action + - name: Configure Pagefile + uses: al-cheb/configure-pagefile-action@v1.3 + + - name: Build project and run tests + shell: cmd + # For the reason on `--no-daemon` see https://github.com/actions/cache/issues/454 + run: gradlew.bat build --stacktrace --no-daemon + + # See: https://github.com/marketplace/actions/junit-report-action + - name: Publish Test Report + uses: mikepenz/action-junit-report@v4.0.3 + if: always() # always run even if the previous step fails + with: + report_paths: '**/build/test-results/**/TEST-*.xml' + require_tests: true # will fail workflow if test reports not found diff --git a/.github/workflows/ensure-reports-updated.yml b/.github/workflows/ensure-reports-updated.yml new file mode 100644 index 0000000..fdd8b8e --- /dev/null +++ b/.github/workflows/ensure-reports-updated.yml @@ -0,0 +1,25 @@ +# Ensures that the license report files were modified in this PR. + +name: Ensure license reports updated + +on: + pull_request: + branches: + - '**' + +jobs: + build: + name: Ensure license reports updated + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + # Configure the checkout of all branches, so that it is possible to run the comparison. + fetch-depth: 0 + # Check out the `config` submodule to fetch the required script file. + submodules: true + + - name: Check that both `pom.xml` and license report files are modified + shell: bash + run: chmod +x ./config/scripts/ensure-reports-updated.sh && ./config/scripts/ensure-reports-updated.sh diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml index 47e2938..b2955de 100644 --- a/.github/workflows/gradle-wrapper-validation.yml +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout latest code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 + uses: gradle/actions/wrapper-validation@v4 diff --git a/.github/workflows/increment-guard.yml b/.github/workflows/increment-guard.yml new file mode 100644 index 0000000..1993841 --- /dev/null +++ b/.github/workflows/increment-guard.yml @@ -0,0 +1,29 @@ +# Ensures that the current lib version is not yet published but executing the Gradle +# `checkVersionIncrement` task. + +name: Check version increment + +on: + push: + branches: + - '**' + +jobs: + build: + name: Check version increment + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: 'true' + + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: zulu + cache: gradle + + - name: Check version is not yet published + shell: bash + run: ./gradlew checkVersionIncrement --stacktrace diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..8b5b4d5 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,63 @@ +name: Publish + +on: + push: + branches: [master] + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: 'true' + + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: zulu + cache: gradle + + - name: Decrypt CloudRepo credentials + run: ./config/scripts/decrypt.sh "$CLOUDREPO_CREDENTIALS_KEY" ./.github/keys/cloudrepo.properties.gpg ./cloudrepo.properties + env: + CLOUDREPO_CREDENTIALS_KEY: ${{ secrets.CLOUDREPO_CREDENTIALS_KEY }} + + - name: Decrypt Git SSH credentials + run: ./config/scripts/decrypt.sh "$GIT_CREDENTIALS_KEY" ./.github/keys/deploy_key_rsa.gpg ./deploy_key_rsa + env: + GIT_CREDENTIALS_KEY: ${{ secrets.GIT_CREDENTIALS_KEY }} + + # Make sure the SSH key is not "too visible". SSH agent will not accept it otherwise. + - name: Set file system permissions + run: chmod 400 ./deploy_key_rsa && chmod +x ./config/scripts/register-ssh-key.sh + + - name: Decrypt GCS credentials + run: ./config/scripts/decrypt.sh "$GCS_CREDENTIALS_KEY" ./.github/keys/gcs-auth-key.json.gpg ./gcs-auth-key.json + env: + GCS_CREDENTIALS_KEY: ${{ secrets.GCS_CREDENTIALS_KEY }} + + - name: Decrypt GCAR credentials + run: ./config/scripts/decrypt.sh "$MAVEN_PUBLISHER_KEY" ./.github/keys/maven-publisher.json.gpg ./maven-publisher.json + env: + MAVEN_PUBLISHER_KEY: ${{ secrets.MAVEN_PUBLISHER_KEY }} + + - name: Decrypt Git SSH credentials + run: ./config/scripts/decrypt.sh "$GRADLE_PORTAL_CREDENTIALS_KEY" ./.github/keys/gradle-plugin-portal.secret.properties.gpg ./gradle-plugin-portal.secret.properties + env: + GRADLE_PORTAL_CREDENTIALS_KEY: ${{ secrets.GRADLE_PORTAL_CREDENTIALS_KEY }} + + - name: Append Gradle properties + run: cat ./gradle-plugin-portal.secret.properties >> ./gradle.properties + + - name: Publish artifacts to Maven + # Since we're in the `master` branch already, this means that tests of a PR passed. + # So, no need to run the tests again when publishing. + run: ./gradlew publish -x test --stacktrace + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + FORMAL_GIT_HUB_PAGES_AUTHOR: developers@spine.io + # https://docs.github.com/en/actions/reference/environment-variables + REPO_SLUG: $GITHUB_REPOSITORY # e.g. SpineEventEngine/core-java + GOOGLE_APPLICATION_CREDENTIALS: ./maven-publisher.json + NPM_TOKEN: ${{ secrets.NPM_SECRET }} diff --git a/.github/workflows/remove-obsolete-artifacts-from-packages.yaml b/.github/workflows/remove-obsolete-artifacts-from-packages.yaml new file mode 100644 index 0000000..fe8ad84 --- /dev/null +++ b/.github/workflows/remove-obsolete-artifacts-from-packages.yaml @@ -0,0 +1,73 @@ +# +# Periodically removes obsolete artifacts from GitHub Packages. +# +# Only non-release artifacts—those containing "SNAPSHOT" in their version name—are eligible +# for removal. The latest non-release artifacts will be retained, with the exact number determined +# by the `VERSION_COUNT_TO_KEEP` environment variable. +# +# Please note the following details: +# +# 1. An artifact cannot be deleted if it is public and has been downloaded more than 5,000 times. +# In this scenario, contact GitHub support for further assistance. +# +# 2. This workflow only applies to artifacts published from this repository. +# +# 3. A maximum of 100 artifacts can be removed per run from each package; +# if there are more than 100 obsolete artifacts, either manually restart the workflow +# or wait for the next scheduled removal. +# +# 4. When artifacts with version `x.x.x-SNAPSHOT` are published, GitHub automatically appends +# the current timestamp, resulting in versions like `x.x.x-SNAPSHOT.20241024.173759`. +# All such artifacts are grouped into one package and treated as a single package +# in GitHub Packages with the version `x.x.x-SNAPSHOT`. Consequently, it is not possible +# to remove obsolete versions within a package; only the entire package can be deleted. +# + +name: Remove obsolete Maven artifacts from GitHub Packages + +on: + schedule: + - cron: '0 0 * * *' # Run every day at midnight. + +env: + VERSION_COUNT_TO_KEEP: 5 # Number of most recent SNAPSHOT versions to retain. + +jobs: + retrieve-package-names: + name: Retrieve the package names published from this repository + runs-on: ubuntu-latest + outputs: + package-names: ${{ steps.request-package-names.outputs.package-names }} + steps: + - uses: actions/checkout@v4 + with: + submodules: 'true' + + - name: Retrieve the names of packages + id: request-package-names + shell: bash + run: | + repoName=$(echo ${{ github.repository }} | cut -d '/' -f2) + chmod +x ./config/scripts/request-package-names.sh + ./config/scripts/request-package-names.sh ${{ github.token }} \ + $repoName ${{ github.repository_owner }} ./package-names.json + echo "package-names=$(<./package-names.json)" >> $GITHUB_OUTPUT + + delete-obsolete-artifacts: + name: Remove obsolete artifacts published from this repository to GitHub Packages + needs: retrieve-package-names + runs-on: ubuntu-latest + strategy: + matrix: + package-name: ${{ fromJson(needs.retrieve-package-names.outputs.package-names) }} + steps: + - name: Remove obsolete artifacts from '${{ matrix.package-name }}' package + uses: actions/delete-package-versions@v5 + with: + owner: ${{ github.repository_owner }} + package-name: ${{ matrix.package-name }} + package-type: 'maven' + token: ${{ github.token }} + min-versions-to-keep: ${{ env.VERSION_COUNT_TO_KEEP }} + # Ignores artifacts that do not contain the word "SNAPSHOT". + ignore-versions: '^(?!.+SNAPSHOT).*$' diff --git a/.gitignore b/.gitignore index 68bbc5c..0f798d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,11 @@ # -# Copyright 2023, TeamDev. All rights reserved. +# Copyright 2025, TeamDev. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0 # # Redistribution and use in source and/or binary forms, with or without # modification, must retain the above copyright notice and the following @@ -31,6 +31,10 @@ # # Therefore, instructions below are superset of instructions required for all the projects. +.java-version + +buildSrc/.kotlin/ + # IntelliJ IDEA modules and interim config files. *.iml .idea/*.xml @@ -55,6 +59,7 @@ # Gradle build files **/build/** +!**/src/**/build/** # Build files produced by the IDE **/out/** diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 8dba535..809943c 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -84,9 +84,6 @@ - - @@ -103,4 +100,4 @@ - \ No newline at end of file + diff --git a/.idea/copyright/TeamDev_Open_Source.xml b/.idea/copyright/TeamDev_Open_Source.xml index 14d7385..cea7fed 100644 --- a/.idea/copyright/TeamDev_Open_Source.xml +++ b/.idea/copyright/TeamDev_Open_Source.xml @@ -1,6 +1,6 @@ - diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml index 69417f0..0b8f9a1 100644 --- a/.idea/copyright/profiles_settings.xml +++ b/.idea/copyright/profiles_settings.xml @@ -1,3 +1,7 @@ - - \ No newline at end of file + + + + + + diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 35bbdff..b091734 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -146,13 +146,11 @@ - - @@ -194,7 +192,6 @@ - @@ -578,7 +575,6 @@ - @@ -623,6 +619,9 @@ + + + @@ -690,7 +689,6 @@ - @@ -711,7 +709,6 @@ -