diff --git a/.env.template b/.env.template index 1b0606e..6b76b3f 100644 --- a/.env.template +++ b/.env.template @@ -1,4 +1,5 @@ PUBLISH_PRODUCTION= +OSSRH_STAGING_PROFILE_ID= OSSRH_USERNAME= OSSRH_PASSWORD= SIGNING_KEYID= diff --git a/.github/workflows/pull-request-build.yml b/.github/workflows/pull-request-build.yml index 722210a..a5bfc54 100644 --- a/.github/workflows/pull-request-build.yml +++ b/.github/workflows/pull-request-build.yml @@ -13,12 +13,28 @@ jobs: with: distribution: 'adopt' java-version: '11' + - name: Set env + run: | + echo 'OSSRH_USERNAME=${{ secrets.OSSRH_USERNAME }}' >> $GITHUB_ENV + echo 'OSSRH_PASSWORD=${{ secrets.OSSRH_PASSWORD }}' >> $GITHUB_ENV + echo 'OSSRH_STAGING_PROFILE_ID=${{ secrets.OSSRH_STAGING_PROFILE_ID }}' >> $GITHUB_ENV + echo 'SIGNING_KEYID=${{ secrets.SIGNING_KEYID }}' >> $GITHUB_ENV + echo 'SIGNING_PASSWORD=${{ secrets.SIGNING_PASSWORD }}' >> $GITHUB_ENV + echo 'SIGNING_KEY<> $GITHUB_ENV + echo '${{ secrets.SIGNING_KEY }}' >> $GITHUB_ENV + echo 'EOF' >> $GITHUB_ENV - name: Gradle clean run: | ./gradlew clean - name: Gradle build run: | ./gradlew build + - name: Gradle publish to mavenLocal + run: | + ./gradlew publishToMavenLocal + - name: Gradle publish to nexus-snapshot + run: | + ./gradlew publishToSonatype --stacktrace - name: Upload Build Report uses: actions/upload-artifact@v1 if: always() diff --git a/build.gradle.kts b/build.gradle.kts index b87f307..b7f58c4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,7 @@ buildscript { plugins { base alias(pluginLibs.plugins.dotenv) + alias(pluginLibs.plugins.gradle.nexus.publish) alias(pluginLibs.plugins.dokka) apply false alias(pluginLibs.plugins.ktlint) } @@ -38,3 +39,18 @@ subprojects { ignoreFailures.set(true) } } + +nexusPublishing { + repositories { + sonatype { + stagingProfileId.set(env.OSSRH_STAGING_PROFILE_ID.orElse("")) + username.set(env.OSSRH_USERNAME.orElse("")) + password.set(env.OSSRH_PASSWORD.orElse("")) + } + } + useStaging.set(!env.PUBLISH_PRODUCTION.isPresent) + transitionCheckOptions { + maxRetries.set(100) + delayBetween.set(java.time.Duration.ofSeconds(5)) + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 34eb30d..16c56fd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,6 +21,7 @@ dependencyResolutionManagement { val assertk = "0.25" val androidGradlePlugin = "7.0.3" // sdk version is defined in bulidSrc val dotenv = "1.2.0" + val gradleNexusPublish = "1.1.0" val ktlint = "10.2.1" val androidCompileSdkVersion = 31 @@ -34,6 +35,7 @@ dependencyResolutionManagement { create("pluginLibs") { plugin("dotenv", "co.uzzu.dotenv.gradle").version(dotenv) + plugin("gradle-nexus-publish", "io.github.gradle-nexus.publish-plugin").version(gradleNexusPublish) plugin("kotlin-multiplatform", "org.jetbrains.kotlin.multiplatform").version(kotlin) plugin("android-library", "com.android.library").version(androidGradlePlugin) plugin("ktlint", "org.jlleitschuh.gradle.ktlint").version(ktlint) diff --git a/subprojects/core/core.build.gradle.kts b/subprojects/core/core.build.gradle.kts index b0f6de9..3dcc6df 100644 --- a/subprojects/core/core.build.gradle.kts +++ b/subprojects/core/core.build.gradle.kts @@ -136,18 +136,6 @@ setProperty("archivesBaseName", publishingArtifactIdBase) afterEvaluate { // workaround for AGP to resolve android library artifactId correctly. publishing { - repositories { - maven { - url = env.PUBLISH_PRODUCTION.orNull() - ?.run { uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") } - ?: uri("https://oss.sonatype.org/content/repositories/snapshots/") - credentials { - username = env.OSSRH_USERNAME.orElse("") - password = env.OSSRH_PASSWORD.orElse("") - } - } - } - publications.withType().all { val publishingArtifactId = when (name) { "metadata" -> {