Skip to content

Commit ed4fade

Browse files
authored
Merge pull request #57 from Flagsmith/ci/publish-to-maven
ci: publish to Maven central
2 parents 1604ed0 + 06ce055 commit ed4fade

File tree

10 files changed

+110
-40
lines changed

10 files changed

+110
-40
lines changed

.github/actions/prepare-gradle/action.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ description: ""
44
inputs:
55
java-version:
66
description: "Java Version"
7-
default: "11"
7+
default: "17"
88
distribution:
99
description: "Java Distribution"
1010
default: "temurin"
1111

1212
runs:
1313
using: "composite"
1414
steps:
15-
- name: Setup JDK 11
16-
uses: actions/setup-java@v3
15+
- name: Setup JDK 17
16+
uses: actions/setup-java@v4
1717
with:
1818
java-version: ${{ inputs.java-version }}
1919
distribution: ${{ inputs.distribution }}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Publish to Maven Central
2+
3+
on:
4+
push:
5+
tags:
6+
- "*"
7+
8+
jobs:
9+
publish:
10+
name: Publish
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Preconfigure gradle
17+
uses: ./.github/actions/prepare-gradle
18+
19+
- name: Publish to Maven Central
20+
run: ./gradlew publishAllPublicationsToMavenCentralRepository
21+
env:
22+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
23+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
24+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ vars.SONATYPE_USERNAME }}
25+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_PASSWORD }}

.github/workflows/verify-pull-request.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,6 @@ jobs:
2929

3030
- name: Test Build Process
3131
run: ./gradlew publishToMavenLocal
32+
env:
33+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
34+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}

FlagsmithClient/build.gradle.kts

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent
77
import java.io.ByteArrayOutputStream
88
import java.util.Date
99

10+
import com.vanniktech.maven.publish.SonatypeHost
11+
1012
plugins {
1113
id("com.android.library")
1214
kotlin("android")
1315
id("org.jetbrains.kotlinx.kover")
1416
id("maven-publish")
17+
18+
id("com.vanniktech.maven.publish").version("0.29.0")
1519
}
1620

1721
val versionNumber: String by lazy {
@@ -187,16 +191,36 @@ fun String.contentLine(length: Int, extraPadding: String = " ") =
187191
fun tableLine(length: Int, leading: String, trailing: String) =
188192
"".repeat(length - 2).wrapWith(leading, trailing)
189193

190-
publishing {
191-
publications {
192-
register<MavenPublication>("release") {
193-
groupId = "com.flagsmith"
194-
artifactId = "flagsmith-kotlin-android-client"
195-
version = versionNumber
194+
mavenPublishing {
195+
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
196+
197+
signAllPublications()
198+
199+
coordinates("io.flagsmith", "flagsmith-kotlin-android-client", versionNumber)
196200

197-
afterEvaluate {
198-
from(components["release"])
201+
pom {
202+
name.set("Flagsmith Kotlin Android Client")
203+
description.set("A library for integrating Flagsmith feature flagging.")
204+
inceptionYear.set("2024")
205+
url.set("https://github.com/flagsmith/flagsmith-kotlin-android-client/")
206+
licenses {
207+
license {
208+
name.set("BSD 3-Clause \"New\" or \"Revised\" License")
209+
url.set("https://github.com/Flagsmith/flagsmith-kotlin-android-client/blob/main/LICENSE")
210+
distribution.set("repo")
199211
}
200212
}
213+
developers {
214+
developer {
215+
id.set("flagsmith")
216+
name.set("Flagsmith")
217+
url.set("https://github.com/flagsmith/")
218+
}
219+
}
220+
scm {
221+
url.set("https://github.com/flagsmith/flagsmith-kotlin-android-client/")
222+
connection.set("scm:git:git://github.com/flagsmith/flagsmith-kotlin-android-client.git")
223+
developerConnection.set("scm:git:ssh://[email protected]/flagsmith/flagsmith-kotlin-android-client.git")
224+
}
201225
}
202226
}

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright 2023 Bullet Train Ltd. A UK company.
1+
Copyright 2024 Bullet Train Ltd. A UK company.
22

33
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
44

build.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
plugins {
2-
id("com.android.application").version("7.3.1").apply(false)
3-
id("com.android.library").version("7.3.1").apply(false)
2+
id("com.android.application").version("8.5.1").apply(false)
3+
id("com.android.library").version("8.5.1").apply(false)
44
kotlin("android").version("1.8.0").apply(false)
55
id("org.jetbrains.kotlinx.kover").version("0.6.1").apply(false)
6+
7+
id("com.vanniktech.maven.publish").version("0.29.0")
68
}
79

810
val clean by tasks.registering(Delete::class) {

gradle/wrapper/gradle-wrapper.jar

-16.8 KB
Binary file not shown.
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
#Mon Jan 02 04:33:47 GMT 2023
21
distributionBase=GRADLE_USER_HOME
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
42
distributionPath=wrapper/dists
5-
zipStorePath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
4+
networkTimeout=10000
5+
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME
7+
zipStorePath=wrapper/dists

gradlew

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# See the License for the specific language governing permissions and
1616
# limitations under the License.
1717
#
18+
# SPDX-License-Identifier: Apache-2.0
19+
#
1820

1921
##############################################################################
2022
#
@@ -55,7 +57,7 @@
5557
# Darwin, MinGW, and NonStop.
5658
#
5759
# (3) This script is generated from the Groovy template
58-
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
60+
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
5961
# within the Gradle project.
6062
#
6163
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +82,12 @@ do
8082
esac
8183
done
8284

83-
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
84-
85-
APP_NAME="Gradle"
85+
# This is normally unused
86+
# shellcheck disable=SC2034
8687
APP_BASE_NAME=${0##*/}
87-
88-
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89-
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
88+
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
89+
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
90+
' "$PWD" ) || exit
9091

9192
# Use the maximum available, or set MAX_FD != -1 to use that value.
9293
MAX_FD=maximum
@@ -133,22 +134,29 @@ location of your Java installation."
133134
fi
134135
else
135136
JAVACMD=java
136-
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137+
if ! command -v java >/dev/null 2>&1
138+
then
139+
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137140
138141
Please set the JAVA_HOME variable in your environment to match the
139142
location of your Java installation."
143+
fi
140144
fi
141145

142146
# Increase the maximum file descriptors if we can.
143147
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144148
case $MAX_FD in #(
145149
max*)
150+
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
151+
# shellcheck disable=SC2039,SC3045
146152
MAX_FD=$( ulimit -H -n ) ||
147153
warn "Could not query maximum file descriptor limit"
148154
esac
149155
case $MAX_FD in #(
150156
'' | soft) :;; #(
151157
*)
158+
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
159+
# shellcheck disable=SC2039,SC3045
152160
ulimit -n "$MAX_FD" ||
153161
warn "Could not set maximum file descriptor limit to $MAX_FD"
154162
esac
@@ -193,11 +201,15 @@ if "$cygwin" || "$msys" ; then
193201
done
194202
fi
195203

196-
# Collect all arguments for the java command;
197-
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
198-
# shell script including quotes and variable substitutions, so put them in
199-
# double quotes to make sure that they get re-expanded; and
200-
# * put everything else in single quotes, so that it's not re-expanded.
204+
205+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
206+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
207+
208+
# Collect all arguments for the java command:
209+
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
210+
# and any embedded shellness will be escaped.
211+
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
212+
# treated as '${Hostname}' itself on the command line.
201213

202214
set -- \
203215
"-Dorg.gradle.appname=$APP_BASE_NAME" \

gradlew.bat

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
@rem See the License for the specific language governing permissions and
1414
@rem limitations under the License.
1515
@rem
16+
@rem SPDX-License-Identifier: Apache-2.0
17+
@rem
1618

1719
@if "%DEBUG%"=="" @echo off
1820
@rem ##########################################################################
@@ -26,6 +28,7 @@ if "%OS%"=="Windows_NT" setlocal
2628

2729
set DIRNAME=%~dp0
2830
if "%DIRNAME%"=="" set DIRNAME=.
31+
@rem This is normally unused
2932
set APP_BASE_NAME=%~n0
3033
set APP_HOME=%DIRNAME%
3134

@@ -42,11 +45,11 @@ set JAVA_EXE=java.exe
4245
%JAVA_EXE% -version >NUL 2>&1
4346
if %ERRORLEVEL% equ 0 goto execute
4447

45-
echo.
46-
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47-
echo.
48-
echo Please set the JAVA_HOME variable in your environment to match the
49-
echo location of your Java installation.
48+
echo. 1>&2
49+
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
50+
echo. 1>&2
51+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
52+
echo location of your Java installation. 1>&2
5053

5154
goto fail
5255

@@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
5659

5760
if exist "%JAVA_EXE%" goto execute
5861

59-
echo.
60-
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61-
echo.
62-
echo Please set the JAVA_HOME variable in your environment to match the
63-
echo location of your Java installation.
62+
echo. 1>&2
63+
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
64+
echo. 1>&2
65+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
66+
echo location of your Java installation. 1>&2
6467

6568
goto fail
6669

0 commit comments

Comments
 (0)