Skip to content

Commit 2976d81

Browse files
ECWID-155655 - (feat) add new format of snapshots' sanitized versions for devs
1 parent 4e32c92 commit 2976d81

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

.github/workflows/pull-request.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ jobs:
2424
cache: 'gradle'
2525

2626
- name: Build, run tests and upload dev snapshot to Maven Central with Gradle
27-
run: ./gradlew devSnapshot printDevSnapshotReleaseNote
27+
run: |
28+
./gradlew devSnapshot printDevSnapshotReleaseNote printSanitizedVersion
29+
cat sanitized_version.md >> $GITHUB_STEP_SUMMARY
2830
env:
2931
STORE_ID: ${{ secrets.STORE_ID }}
3032
API_TOKEN: ${{ secrets.API_TOKEN }}
@@ -34,6 +36,7 @@ jobs:
3436
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
3537
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
3638
GITHUB_HEAD_REF: ${{ github.head_ref }}
39+
GITHUB_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
3740

3841
- name: Upload artifacts with checks results
3942
uses: actions/upload-artifact@v3

build.gradle.kts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,12 @@ tasks.register(Tasks.PRINT_DEV_SNAPSHOT_RELEASE_NOTE_TASK_NAME) {
127127
dependsOn(tasks.getByName("devSnapshot"))
128128
}
129129

130+
tasks.register(Tasks.PRINT_SUMMARY_SANITIZED_TASK_NAME) {
131+
doLast {
132+
printSanitizedVersion(project.sanitizeVersion())
133+
}
134+
}
135+
130136
detekt {
131137
allRules = false
132138
basePath = "$projectDir"
@@ -210,15 +216,16 @@ nexusPublishing {
210216
// <major>.<minor>.<patch>-dev.#+<branchname>.<hash> (local branch)
211217
// <major>.<minor>.<patch>-dev.#+<hash> (github pull request)
212218
// to:
213-
// <major>.<minor>.<patch>-dev+<branchname>-SNAPSHOT
219+
// <major>.<minor>.<patch>-dev+<branchname>_<hash>-SNAPSHOT
214220
fun Project.sanitizeVersion(): String {
215221
val version = version.toString()
216222
return if (project.isSnapshotVersion()) {
217223
val githubHeadRef = settingsProvider.githubHeadRef
224+
val githubHeadSHA = settingsProvider.githubHeadSHA?.take(Consts.MAX_HEAD_SHA_LENGTH)
218225
if (githubHeadRef != null) {
219226
// github pull request
220227
version
221-
.replace(Regex("-dev\\.\\d+\\+[a-f0-9]+$"), "-dev+$githubHeadRef-SNAPSHOT")
228+
.replace(Regex("-dev\\.\\d+\\+[a-f0-9]+$"), "-dev+${githubHeadRef}_$githubHeadSHA-SNAPSHOT")
222229
} else {
223230
// local branch
224231
version
@@ -273,6 +280,16 @@ fun printDevSnapshotReleaseNote(groupId: String, artifactId: String, sanitizedVe
273280
println()
274281
}
275282

283+
fun printSanitizedVersion(sanitizedVersion: String) {
284+
val markdownMessage = """
285+
|## Sanitized Version
286+
|
287+
|**Version:** $sanitizedVersion
288+
|
289+
""".trimMargin()
290+
File("sanitized_version.md").writeText(markdownMessage)
291+
}
292+
276293
class SettingsProvider {
277294

278295
val gpgSigningKey: String?
@@ -290,6 +307,9 @@ class SettingsProvider {
290307
val githubHeadRef: String?
291308
get() = System.getenv(GITHUB_HEAD_REF_PROPERTY)
292309

310+
val githubHeadSHA: String?
311+
get() = System.getenv(GITHUB_HEAD_SHA_PROPERTY)
312+
293313
fun validateGPGSecrets() = require(
294314
value = !gpgSigningKey.isNullOrBlank() && !gpgSigningPassword.isNullOrBlank(),
295315
lazyMessage = {
@@ -310,6 +330,7 @@ class SettingsProvider {
310330
private const val OSSRH_USERNAME_PROPERTY = "OSSRH_USERNAME"
311331
private const val OSSRH_PASSWORD_PROPERTY = "OSSRH_PASSWORD"
312332
private const val GITHUB_HEAD_REF_PROPERTY = "GITHUB_HEAD_REF"
333+
private const val GITHUB_HEAD_SHA_PROPERTY = "GITHUB_HEAD_SHA"
313334
}
314335
}
315336

@@ -339,9 +360,11 @@ object PublicationSettings {
339360
object Consts {
340361
const val SLOW_TESTS_LOGGING_THRESHOLD_MS = 30_000L
341362
const val MAX_TEST_RETRIES_COUNT = 3
363+
const val MAX_HEAD_SHA_LENGTH = 8
342364
}
343365

344366
object Tasks {
345367
const val PRINT_FINAL_RELEASE_NOTE_TASK_NAME = "printFinalReleaseNote"
346368
const val PRINT_DEV_SNAPSHOT_RELEASE_NOTE_TASK_NAME = "printDevSnapshotReleaseNote"
369+
const val PRINT_SUMMARY_SANITIZED_TASK_NAME = "printDevSanitizedVersion"
347370
}

0 commit comments

Comments
 (0)