diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..85ec478a --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,65 @@ +name: Release +on: + push: + tags: + - 'v*' + +jobs: + publish: + name: Release Spotify Confidence Provider + runs-on: ubuntu-latest + + steps: + - name: Cache Gradle and wrapper + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + # Fetch and publish the OpenFeature SDK locally, using remote "main" branch + # This should be removed once the SDK artifacts are openly deployed + - name: webfactory/ssh-agent + uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: ${{ secrets.SDK_REPO_PRIVATE_KEY }} + - name: Clone OpenFeature SDK dependency + run: git clone git@github.com:spotify/openfeature-kotlin-sdk.git + - name: Publish OpenFeature SDK locally + run: ./openfeature-kotlin-sdk/gradlew publishToMavenLocal -p openfeature-kotlin-sdk + + - uses: actions/checkout@v1 + + - name: Set up JDK 12 + uses: actions/setup-java@v1 + with: + java-version: 12 + + - name: Grant Permission for Gradlew to Execute + run: chmod +x gradlew + + - name: Build AAR ⚙️🛠 + run: bash ./gradlew :provider:assemble + + - name: Create Release ✅ + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.TOKEN_PUBLISH }} + with: + tag_name: ${{ github.ref }} + release_name: ${{ github.ref }} + draft: true + prerelease: false + + - name: Upload Confidence Provider AAR 🗳 + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.TOKEN_PUBLISH }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: Provider/build/outputs/aar/Provider-release.aar + asset_name: provider-release.aar + asset_content_type: application/aar \ No newline at end of file diff --git a/Provider/build.gradle.kts b/Provider/build.gradle.kts index b06aebbc..d33f0b7f 100644 --- a/Provider/build.gradle.kts +++ b/Provider/build.gradle.kts @@ -1,3 +1,4 @@ +// ktlint-disable max-line-length plugins { id("com.android.library") @@ -46,13 +47,6 @@ android { kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } - - publishing { - singleVariant("release") { - withSourcesJar() - withJavadocJar() - } - } } dependencies { @@ -68,15 +62,31 @@ dependencies { testImplementation("com.squareup.okhttp3:mockwebserver:${Versions.mockWebServer}") } -publishing { - publications { - register("release") { - groupId = "dev.openfeature.contrib.providers" - artifactId = "confidence" - version = Versions.providerVersion - afterEvaluate { +afterEvaluate { + publishing { + publications { + register("release") { + groupId = "dev.openfeature.contrib.providers" + artifactId = "confidence" + version = Versions.providerVersion + from(components["release"]) + artifact(androidSourcesJar.get()) + + pom { + name.set("SpotifyConfidenceProvider") + } } } } +} + +val androidSourcesJar by tasks.registering(Jar::class) { + archiveClassifier.set("sources") + from(android.sourceSets.getByName("main").java.srcDirs) +} + +// Assembling should be performed before publishing package +tasks.named("publish") { + dependsOn("assemble") } \ No newline at end of file