Skip to content

Commit

Permalink
ci(android): setup publishing of android sdk and gradle plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
abhaysood committed Jan 18, 2024
1 parent 5e20a8f commit 90ee7e3
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 22 deletions.
69 changes: 54 additions & 15 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,74 @@ on:
- 'main'
paths:
- 'measure-android/**'
release:
types: [ published ]

env:
JAVA_VERSION: 17
CACHE_VERSION: 1
JAVA_DISTRIBUTION: 'temurin'
GITHUB_ACTOR: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
checks:
name: Checks
name: Run checks
runs-on: ubuntu-latest
defaults:
run:
working-directory: measure-android
timeout-minutes: 5
timeout-minutes: 10
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
distribution: 'zulu'
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.JAVA_VERSION }}
- run: ./ci-scripts/ci_clear_gradle_cache.sh
- uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ env.CACHE_VERSION }}-${{ hashFiles('**/**.gradle.kts', '**/gradle/wrapper/gradle-wrapper.properties', '**/libs.versions.toml') }}

- name: Check Gradle wrapper
uses: gradle/wrapper-validation-action@v1

- name: Run all checks
run: ./gradlew :measure:check
run: ./gradlew :measure:check

publish-android:
runs-on: ubuntu-latest
needs: [ checks ]
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/measure-android-') && !startsWith(github.ref, 'refs/tags/measure-android-gradle-')
defaults:
run:
working-directory: measure-android
permissions:
contents: read
packages: write
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRIBUTION }}
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Publish measure-android
run: ./gradlew clean :measure:publish --no-daemon --no-parallel --no-configuration-cache --stacktrace

publish-android-gradle:
runs-on: ubuntu-latest
needs: [ checks ]
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/measure-android-gradle-')
defaults:
run:
working-directory: measure-android
permissions:
contents: read
packages: write
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRIBUTION }}
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Publish measure-android-gradle
run: ./gradlew clean :measure-gradle-plugin:publishMavenPublicationToGitHubPackagesRepository --no-daemon --no-parallel --no-configuration-cache --stacktrace
10 changes: 10 additions & 0 deletions measure-android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,13 @@ android.nonTransitiveRClass=true

# Code Style
kotlin.code.style=official

GROUP=sh.measure
MEASURE_ARTIFACT_ID=measure-android
MEASURE_VERSION_NAME=0.1.0

POM_INCEPTION_YEAR=2023
POM_URL=https://github.com/measure-sh/measure
POM_SCM_URL=https://github.com/measure-sh/measure
POM_SCM_CONNECTION=scm:[email protected]:measure-sh/measure.git
POM_SCM_DEV_CONNECTION=scm:[email protected]:measure-sh/measure.git
31 changes: 28 additions & 3 deletions measure-android/measure-gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@ plugins {
id("java-gradle-plugin")
id("com.autonomousapps.testkit") version "0.8"
id("com.diffplug.spotless") version "6.24.0"
id("maven-publish")
}

group = "sh.measure.plugin"
version = "0.0.1"
group = properties["GROUP"] as String
version = properties["MEASURE_PLUGIN_VERSION_NAME"] as String

gradlePlugin {
plugins {
create("plugin") {
id = "sh.measure.plugin"
id = "sh.measure.android.gradle"
displayName = "Measure Gradle Plugin"
description = "A gradle plugin for Measure Android SDK"
implementationClass = "sh.measure.MeasurePlugin"
Expand All @@ -31,6 +32,30 @@ java {
withJavadocJar()
}

val measureGradlePluginVersion = properties["MEASURE_PLUGIN_VERSION_NAME"] as String


publishing {
publications {
create<MavenPublication>("maven") {
groupId = properties["GROUP"] as String
artifactId = properties["MEASURE_PLUGIN_ARTIFACT_ID"] as String
version = measureGradlePluginVersion
}
}

repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/measure-sh/measure")
credentials {
username = System.getenv("GITHUB_ACTOR")
password = System.getenv("GITHUB_TOKEN")
}
}
}
}

dependencies {
compileOnly("com.android.tools.build:gradle:8.2.1")
compileOnly("org.ow2.asm:asm-util:9.6")
Expand Down
3 changes: 3 additions & 0 deletions measure-android/measure-gradle-plugin/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
GROUP=sh.measure
MEASURE_PLUGIN_ARTIFACT_ID=measure-android-gradle
MEASURE_PLUGIN_VERSION_NAME=0.1.0
34 changes: 31 additions & 3 deletions measure-android/measure/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,38 @@ plugins {
kotlin("plugin.serialization")
id("binary-compatibility-validator")
id("com.diffplug.spotless")
id("maven-publish")
}

// apply(from = "publish_local.gradle")

val measureSdkVersion = properties["MEASURE_VERSION_NAME"] as String

publishing {
publications {
create<MavenPublication>("maven") {
groupId = properties["GROUP"] as String
artifactId = properties["MEASURE_ARTIFACT_ID"] as String
version = measureSdkVersion

afterEvaluate {
from(components["release"])
}
}
}

repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/measure-sh/measure")
credentials {
username = System.getenv("GITHUB_ACTOR")
password = System.getenv("GITHUB_TOKEN")
}
}
}
}
apply(from = "publish_local.gradle")

val measureSdkVersion = "\"0.0.1-SNAPSHOT\""
android {
namespace = "sh.measure.android"
compileSdk = 33
Expand All @@ -26,7 +54,7 @@ android {
buildTypes {
defaultConfig {
manifestPlaceholders["measure_url"] = properties["measure_url"]?.toString() ?: ""
buildConfigField("String", "MEASURE_SDK_VERSION", measureSdkVersion)
buildConfigField("String", "MEASURE_SDK_VERSION", "\"$measureSdkVersion\"")
}
release {
isMinifyEnabled = false
Expand Down
2 changes: 1 addition & 1 deletion measure-android/sample/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("sh.measure.plugin")
id("sh.measure.android.gradle")
}

android {
Expand Down

0 comments on commit 90ee7e3

Please sign in to comment.