From f6dc4c6b559790a2f5f1f6ee9f8c04bf0562a37c Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Sat, 18 Feb 2023 23:22:03 +0000 Subject: [PATCH] =?UTF-8?q?[build]=20=E4=BD=BF=E7=94=A8=E8=87=AA=E5=A2=9E?= =?UTF-8?q?=E5=BA=8F=E5=8F=B7=E4=BD=9C=E4=B8=BA=E9=A2=84=E8=A7=88=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=20(#2516)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [build] Use numerical build index numbers for snapshot versions * use warning * Use same index for all machines * fix get * different indexes for branches * add docs --- .github/workflows/build.yml | 15 ++- ci-release-helper/build.gradle.kts | 75 +++++++++++-- ci-release-helper/src/buildIndex/Index.kt | 56 ++++++++++ .../src/buildIndex/SnapshotVersions.kt | 105 ++++++++++++++++++ docs/.images/snapshots-build-jvm.png | Bin 0 -> 46528 bytes docs/.images/snapshots-find-actions.png | Bin 0 -> 9886 bytes docs/UsingSnapshots.md | 31 ++++-- 7 files changed, 257 insertions(+), 25 deletions(-) create mode 100644 ci-release-helper/src/buildIndex/Index.kt create mode 100644 ci-release-helper/src/buildIndex/SnapshotVersions.kt create mode 100644 docs/.images/snapshots-build-jvm.png create mode 100644 docs/.images/snapshots-find-actions.png diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 15f9ef6c5..2216c557f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,7 +64,8 @@ jobs: SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }} SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }} SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }} - CURRENT_BRANCH_NAME: dev # always use -dev for now + MIRAI_BUILD_INDEX_AUTH_USERNAME: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_USERNAME }} + MIRAI_BUILD_INDEX_AUTH_PASSWORD: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_PASSWORD }} - name: "Assemble" run: ./gradlew assemble ${{ env.gradleArgs }} @@ -218,7 +219,8 @@ jobs: SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }} SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }} SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }} - CURRENT_BRANCH_NAME: dev # always use -dev for now + MIRAI_BUILD_INDEX_AUTH_USERNAME: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_USERNAME }} + MIRAI_BUILD_INDEX_AUTH_PASSWORD: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_PASSWORD }} - name: "Assemble" run: ./gradlew assemble ${{ env.gradleArgs }} @@ -245,7 +247,6 @@ jobs: SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }} SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }} SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }} - CURRENT_BRANCH_NAME: dev build-mirai-core-native: name: "Native (${{ matrix.os }})" @@ -258,7 +259,7 @@ jobs: - ubuntu-20.04 # - ubuntu-18.04 # - macos-12 -# - macos-11 + # - macos-11 include: - os: windows-2022 targetName: mingwX64 @@ -361,7 +362,8 @@ jobs: SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }} SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }} SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }} - CURRENT_BRANCH_NAME: dev # always use -dev for now + MIRAI_BUILD_INDEX_AUTH_USERNAME: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_USERNAME }} + MIRAI_BUILD_INDEX_AUTH_PASSWORD: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_PASSWORD }} - name: "Test mirai-core-utils for ${{ matrix.os }}" run: ./gradlew :mirai-core-utils:${{ matrix.targetName }}Test ${{ env.gradleArgs }} @@ -393,7 +395,6 @@ jobs: SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }} SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }} SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }} - CURRENT_BRANCH_NAME: dev - name: Publish LinuxX64 Snapshots if: ${{ github.event.pusher && env.isUbuntu == 'true' }} @@ -403,7 +404,6 @@ jobs: SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }} SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }} SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }} - CURRENT_BRANCH_NAME: dev - name: Publish macOSX64 Snapshots if: ${{ github.event.pusher && env.isMac == 'true' }} @@ -413,5 +413,4 @@ jobs: SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }} SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }} SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }} - CURRENT_BRANCH_NAME: dev diff --git a/ci-release-helper/build.gradle.kts b/ci-release-helper/build.gradle.kts index 3cf7c1088..76d603b02 100644 --- a/ci-release-helper/build.gradle.kts +++ b/ci-release-helper/build.gradle.kts @@ -13,6 +13,7 @@ import java.io.ByteArrayOutputStream plugins { id("io.codearte.nexus-staging") version "0.22.0" kotlin("jvm") + kotlin("plugin.serialization") } tasks.register<JavaExec>("runcihelper") { @@ -66,28 +67,75 @@ nexusStaging { } dependencies { + implementation(`ktor-client-okhttp`) implementation(`kotlinx-serialization-json`) + implementation("org.jetbrains.kotlinx", "kotlinx-datetime", "0.4.0") } tasks.register("updateSnapshotVersion") { group = "mirai" + dependsOn(tasks.compileKotlin) + dependsOn(tasks.compileJava) + doLast { - setProjectVersionForFutureBuilds(snapshotVersion) + val out = ByteArrayOutputStream() + + val sha = getSha() + val branch = getCurrentGitBranch() + + val result = javaexec { + standardOutput = out + classpath(sourceSets.main.get().runtimeClasspath) + mainClass.set("cihelper.buildIndex.GetNextSnapshotIndex") + args(branch, sha) + environment( + "mirai.build.index.auth.username", + System.getenv("MIRAI_BUILD_INDEX_AUTH_USERNAME") + ?: project.property("mirai.build.index.auth.username") + + ) + environment( + "mirai.build.index.auth.password", + System.getenv("MIRAI_BUILD_INDEX_AUTH_PASSWORD") + ?: project.property("mirai.build.index.auth.password") + ) + } + result.assertNormalExitValue() + + val resultString = out.toByteArray().decodeToString() + val index = resultString + .substringAfter("<SNAPSHOT_VERSION_START>", "") + .substringBefore("<SNAPSHOT_VERSION_END>", "") + + logger.info("Exec result:") + logger.info(resultString) + + if (index.isEmpty()) { + throw GradleException("Failed to find version.") + } + + logger.info("Snapshot version index is '$index'") + val versionName = "${Versions.project}-$branch-${index}" + + // Add annotation on GitHub Actions build + // https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-a-notice-message + println("::notice ::本 commit 的预览版本号: $versionName 在 https://github.com/mamoe/mirai/blob/dev/docs/UsingSnapshots.md 查看如何使用预览版本") + + setProjectVersionForFutureBuilds(versionName) } } tasks.register("publishSnapshotPage") { doLast { - UpdateSnapshotPage.run(project, getSha()) + val sha = getSha() + logger.info("CommitRef is $sha") + UpdateSnapshotPage.run(project, sha) } } - -val snapshotVersion by lazy { getSnapshotVersionImpl() } - fun getSnapshotVersionImpl(): String { - val branch = System.getenv("CURRENT_BRANCH_NAME") + val branch = getCurrentGitBranch() logger.info("Current branch name is '$branch'") val sha = getSha().trim().take(8) return "${Versions.project}-$branch-${sha}".also { @@ -137,7 +185,20 @@ fun getSha(): String { standardOutput = out workingDir = rootProject.projectDir } - val sha = out.toString() + val sha = out.toString().trim() logger.info("Current commit sha is '$sha'") return sha +} + +fun getCurrentGitBranch(): String { + val out = ByteArrayOutputStream() + exec { + commandLine("git") + args("rev-parse", "--abbrev-ref", "HEAD") + standardOutput = out + workingDir = rootProject.projectDir + } + val sha = out.toString().trim() + logger.info("Current branch is '$sha'") + return sha } \ No newline at end of file diff --git a/ci-release-helper/src/buildIndex/Index.kt b/ci-release-helper/src/buildIndex/Index.kt new file mode 100644 index 000000000..66347b3ab --- /dev/null +++ b/ci-release-helper/src/buildIndex/Index.kt @@ -0,0 +1,56 @@ +/* + * Copyright 2019-2022 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * + * https://github.com/mamoe/mirai/blob/dev/LICENSE + */ + +@file:UseSerializers(UuidAsStringSerializer::class) + +package cihelper.buildIndex + +import kotlinx.datetime.LocalDateTime +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.UseSerializers +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import java.util.* + +@Serializable +data class NextIndexResp( + val moduleId: UUID, + val branchId: UUID, + val previousIndexId: UUID?, + val previousIndexValue: UInt?, + val newIndex: Index +) + +@Serializable +data class Index( + val id: UUID, + val branchId: UUID, + val commitRef: String, + val value: UInt, + val date: LocalDateTime +) { + init { + require(commitRef.length == 40) { "Invalid commit ref: '$commitRef'" } + } +} + + +object UuidAsStringSerializer : KSerializer<UUID> { + override val descriptor: SerialDescriptor = String.serializer().descriptor + override fun deserialize(decoder: Decoder): UUID { + return UUID.fromString(String.serializer().deserialize(decoder)) + } + + override fun serialize(encoder: Encoder, value: UUID) { + String.serializer().serialize(encoder, value.toString()) + } +} \ No newline at end of file diff --git a/ci-release-helper/src/buildIndex/SnapshotVersions.kt b/ci-release-helper/src/buildIndex/SnapshotVersions.kt new file mode 100644 index 000000000..b3d3f4c62 --- /dev/null +++ b/ci-release-helper/src/buildIndex/SnapshotVersions.kt @@ -0,0 +1,105 @@ +/* + * Copyright 2019-2022 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * + * https://github.com/mamoe/mirai/blob/dev/LICENSE + */ + +package cihelper.buildIndex + +import io.ktor.client.* +import io.ktor.client.request.* +import io.ktor.client.statement.* +import io.ktor.http.* +import kotlinx.coroutines.runBlocking +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.json.Json + +object GetNextSnapshotIndex { + @JvmStatic + fun main(args: Array<String>) { + val branch = args.getOrNull(0) ?: error("Missing branch argument") + val commitRef = args.getOrNull(1) ?: error("Missing commitRef argument") + + + println("Commit ref is: $commitRef") + println("Making request...") + HttpClient().use { client -> + runBlocking { + kotlin.runCatching { client.createBranch(branch = branch) } + + var index = client.getExistingIndex(branch = branch, commitRef = commitRef) + if (index == null) { + print("No existing index found. ") + index = client.postNextIndex(branch = branch, commitRef = commitRef) + println("Got new index: $index") + } else { + print("Existing index: $index") + } + println() + + println("<SNAPSHOT_VERSION_START>${index.value}<SNAPSHOT_VERSION_END>") + } + } + } +} + +suspend fun HttpClient.getExistingIndex( + module: String = "mirai-core", + branch: String, + commitRef: String, +): Index? { + // https://build.mirai.mamoe.net/v1/mirai-core/dev/indexes/?commitRef=29121565132bed6e996f3de32faaf49106ae8e39 + val resp = get("https://build.mirai.mamoe.net/v1/$module/$branch/indexes/") { + basicAuth( + System.getenv("mirai.build.index.auth.username"), + System.getenv("mirai.build.index.auth.password") + ) + parameter("commitRef", commitRef) + } + if (!resp.status.isSuccess()) { + val body = runCatching { resp.bodyAsText() }.getOrNull() + throw IllegalStateException("Request failed: ${resp.status} $body") + } + + val body = resp.bodyAsText() + if (body.isBlank()) return null + return Json.decodeFromString(ListSerializer(Index.serializer()), body).lastOrNull() +} + +suspend fun HttpClient.createBranch( + module: String = "mirai-core", + branch: String, +): Boolean { + // https://build.mirai.mamoe.net/v1/mirai-core/dev/indexes/?commitRef=29121565132bed6e996f3de32faaf49106ae8e39 + val resp = put("https://build.mirai.mamoe.net/v1/$module/$branch") { + basicAuth( + System.getenv("mirai.build.index.auth.username"), + System.getenv("mirai.build.index.auth.password") + ) + } + return resp.status.isSuccess() +} + +suspend fun HttpClient.postNextIndex( + module: String = "mirai-core", + branch: String, + commitRef: String, +): Index { + val resp = post("https://build.mirai.mamoe.net/v1/$module/$branch/indexes/next") { + basicAuth( + System.getenv("mirai.build.index.auth.username"), + System.getenv("mirai.build.index.auth.password") + ) + parameter("commitRef", commitRef) + } + if (!resp.status.isSuccess()) { + val body = runCatching { resp.bodyAsText() }.getOrNull() + throw IllegalStateException("Request failed: ${resp.status} $body") + } + + val body = resp.bodyAsText() + return Json.decodeFromString(NextIndexResp.serializer(), body).newIndex +} \ No newline at end of file diff --git a/docs/.images/snapshots-build-jvm.png b/docs/.images/snapshots-build-jvm.png new file mode 100644 index 0000000000000000000000000000000000000000..1c68a9cd8335226280570895de1ccbddefeacde8 GIT binary patch literal 46528 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 literal 0 HcmV?d00001 diff --git a/docs/.images/snapshots-find-actions.png b/docs/.images/snapshots-find-actions.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0f159a9b8977d02f740587bf6f20ad9ca99f3c GIT binary patch literal 9886 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 literal 0 HcmV?d00001 diff --git a/docs/UsingSnapshots.md b/docs/UsingSnapshots.md index 33f7167c9..b3799f91b 100644 --- a/docs/UsingSnapshots.md +++ b/docs/UsingSnapshots.md @@ -12,6 +12,7 @@ ### 1. 添加 Maven 仓库 ```xml + <repositories> <repository> <id>miraisnapshots</id> @@ -23,26 +24,30 @@ ### 2. 修改依赖版本 -1. 选择需要测试的 commit, 找到其 revision id (即 SHA), 取前 8 位, 如 `3cb39c4`. -2. 在该 commit 所属分支的 `buildSrc/src/main/kotlin/Versions.kt` 确认 mirai 主版本号如 `2.8.0-M1`. -3. 得到开发测试版本号 `2.8.0-M1-dev-3cb39c4`. +1. 选择需要测试的 commit, 在 GitHub 查看其构建状态, 如图所示: +  +2. 点击 "Build / JVM" 右侧的 "Details": +  +3. 在打开的页面中点击 "Summary", 然后在 "Annotations" 栏目中找到类似 "本 commit 的预览版本号: 2.15.0-build-index-1" 的提示, 得到开发测试版本号 `2.15.0-build-index-1`. 其中, `build-index` 为此 commit 所属分支名, `2.15.0` 意为当前分支的主版本号, `1` 为此分支下的第 1 次成功构建. + 通常在 `dev` 分支构建的预览版本号类似为 `2.15.0-dev-102` ```xml + <dependencies> <dependency> <groupId>net.mamoe</groupId> <artifactId>mirai-core-jvm</artifactId> - <version>2.8.0-M1-dev-3cb39c4</version> + <version>2.15.0-build-index-1</version> </dependency> </dependencies> ``` ## 在 Gradle 使用 - ### 1. 添加 Maven 仓库 build.gradle(.kts) + ``` repositories { maven("https://repo.mirai.mamoe.net/snapshots") @@ -51,20 +56,25 @@ repositories { ### 2. 修改依赖版本 -1. 选择需要测试的 commit, 找到其 revision id (即 SHA), 取前 8 位, 如 `3cb39c4`. -2. 在该 commit 所属分支的 `buildSrc/src/main/kotlin/Versions.kt` 确认 mirai 主版本号如 `2.8.0-M1`. -3. 得到开发测试版本号 `2.8.0-M1-dev-3cb39c4`. +1. 选择需要测试的 commit, 在 GitHub 查看其构建状态, 如图所示: +  +2. 点击 "Build / JVM" 右侧的 "Details": +  +3. 在打开的页面中点击 "Summary", 然后在 "Annotations" 栏目中找到类似 "本 commit 的预览版本号: 2.15.0-build-index-1" 的提示, 得到开发测试版本号 `2.15.0-build-index-1`. 其中, `build-index` 为此 commit 所属分支名, `2.15.0` 意为当前分支的主版本号, `1` 为此分支下的第 1 次成功构建. + 通常在 `dev` 分支构建的预览版本号类似为 `2.15.0-dev-102` build.gradle(.kts) + ``` dependencies { - implementation("net.mamoe:mirai-core:2.8.0-M1-dev-3cb39c4") + implementation("net.mamoe:mirai-core:2.15.0-build-index-1") } ``` ## 使用测试版本 Mirai Console Gradle 插件 settings.gradle(.kts) + ``` pluginManagement { repositories { @@ -75,9 +85,10 @@ pluginManagement { ``` plugin.gradle(.kts) + ``` plugins { // ... - id("net.mamoe.mirai-console") version "2.8.0-M1-dev-3cb39c4" + id("net.mamoe.mirai-console") version "2.15.0-build-index-1" } ``` \ No newline at end of file