From a838835f8842419ec9b6eacabee26f2123c12e14 Mon Sep 17 00:00:00 2001 From: Roman Timchenko Date: Tue, 14 Jan 2025 15:50:57 +0400 Subject: [PATCH] Add new format of snapshots' sanitized versions for devs --- .github/workflows/pull-request.yml | 5 ++++- build.gradle.kts | 27 +++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 40a11e269..9ab6d2c29 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -24,7 +24,9 @@ jobs: cache: 'gradle' - name: Build, run tests and upload dev snapshot to Maven Central with Gradle - run: ./gradlew devSnapshot printDevSnapshotReleaseNote + run: | + ./gradlew devSnapshot printDevSnapshotReleaseNote printSanitizedVersion + cat sanitized_version.md >> $GITHUB_STEP_SUMMARY env: STORE_ID: ${{ secrets.STORE_ID }} API_TOKEN: ${{ secrets.API_TOKEN }} @@ -34,6 +36,7 @@ jobs: OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} GITHUB_HEAD_REF: ${{ github.head_ref }} + GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }} - name: Upload artifacts with checks results uses: actions/upload-artifact@v3 diff --git a/build.gradle.kts b/build.gradle.kts index 6bd6ee04e..8b53b2a42 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -127,6 +127,12 @@ tasks.register(Tasks.PRINT_DEV_SNAPSHOT_RELEASE_NOTE_TASK_NAME) { dependsOn(tasks.getByName("devSnapshot")) } +tasks.register(Tasks.PRINT_SUMMARY_SANITIZED_TASK_NAME) { + doLast { + printSanitizedVersion(project.sanitizeVersion()) + } +} + detekt { allRules = false basePath = "$projectDir" @@ -210,15 +216,16 @@ nexusPublishing { // ..-dev.#+. (local branch) // ..-dev.#+ (github pull request) // to: -// ..-dev+-SNAPSHOT +// ..-dev+_-SNAPSHOT fun Project.sanitizeVersion(): String { val version = version.toString() return if (project.isSnapshotVersion()) { val githubHeadRef = settingsProvider.githubHeadRef + val githubHeadSHA = settingsProvider.githubHeadSHA?.take(Consts.MAX_HEAD_SHA_LENGTH) if (githubHeadRef != null) { // github pull request version - .replace(Regex("-dev\\.\\d+\\+[a-f0-9]+$"), "-dev+$githubHeadRef-SNAPSHOT") + .replace(Regex("-dev\\.\\d+\\+[a-f0-9]+$"), "-dev+${githubHeadRef}_$githubHeadSHA-SNAPSHOT") } else { // local branch version @@ -273,6 +280,16 @@ fun printDevSnapshotReleaseNote(groupId: String, artifactId: String, sanitizedVe println() } +fun printSanitizedVersion(sanitizedVersion: String) { + val markdownMessage = """ + |## Sanitized Version + | + |**Version:** $sanitizedVersion + | + """.trimMargin() + File("sanitized_version.md").writeText(markdownMessage) +} + class SettingsProvider { val gpgSigningKey: String? @@ -290,6 +307,9 @@ class SettingsProvider { val githubHeadRef: String? get() = System.getenv(GITHUB_HEAD_REF_PROPERTY) + val githubHeadSHA: String? + get() = System.getenv(GITHUB_HEAD_SHA_PROPERTY) + fun validateGPGSecrets() = require( value = !gpgSigningKey.isNullOrBlank() && !gpgSigningPassword.isNullOrBlank(), lazyMessage = { @@ -310,6 +330,7 @@ class SettingsProvider { private const val OSSRH_USERNAME_PROPERTY = "OSSRH_USERNAME" private const val OSSRH_PASSWORD_PROPERTY = "OSSRH_PASSWORD" private const val GITHUB_HEAD_REF_PROPERTY = "GITHUB_HEAD_REF" + private const val GITHUB_HEAD_SHA_PROPERTY = "GITHUB_HEAD_SHA" } } @@ -339,9 +360,11 @@ object PublicationSettings { object Consts { const val SLOW_TESTS_LOGGING_THRESHOLD_MS = 30_000L const val MAX_TEST_RETRIES_COUNT = 3 + const val MAX_HEAD_SHA_LENGTH = 8 } object Tasks { const val PRINT_FINAL_RELEASE_NOTE_TASK_NAME = "printFinalReleaseNote" const val PRINT_DEV_SNAPSHOT_RELEASE_NOTE_TASK_NAME = "printDevSnapshotReleaseNote" + const val PRINT_SUMMARY_SANITIZED_TASK_NAME = "printDevSanitizedVersion" }