diff --git a/.github/fetch_to_tag.sh b/.github/scripts/fetch_to_tag.sh
similarity index 100%
rename from .github/fetch_to_tag.sh
rename to .github/scripts/fetch_to_tag.sh
diff --git a/.github/release.sh b/.github/scripts/release.sh
similarity index 94%
rename from .github/release.sh
rename to .github/scripts/release.sh
index d4530784..2a5df64c 100755
--- a/.github/release.sh
+++ b/.github/scripts/release.sh
@@ -38,8 +38,6 @@ elif [[ -z $VERSION ]]; then
elif ! [[ $VERSION =~ $SEMVER_REGEX ]]; then
echo "Skipping release. Bad version used."
else
- # Gradle needs the absolute path to the secring
- export GPG_KEY_LOCATION="$(realpath "$GPG_KEY_LOCATION")"
if [[ ${BASH_REMATCH[5]} == 'SNAPSHOT' ]]; then
echo "Doing SNAPSHOT release..."
diff --git a/.github/secring.gpg.enc b/.github/secring.gpg.enc
deleted file mode 100644
index efa40c83..00000000
Binary files a/.github/secring.gpg.enc and /dev/null differ
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3e9ba2d7..582e95a3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,57 +1,54 @@
name: rollbar-java CI
on:
+ workflow_call:
+ secrets:
+ RELEASE_GPG_PRIVATE_KEY:
+ required: true
+ RELEASE_GPG_PRIVATE_KEY_PASSPHRASE:
+ required: true
+ NEXUS_USERNAME:
+ required: true
+ NEXUS_PASSWORD:
+ required: true
push:
- branches: [master]
+ branches: [ master ]
pull_request:
- branches: [master]
+ branches: [ master ]
+
jobs:
+ validation:
+ name: Gradle wrapper validation
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v4
+ - uses: gradle/actions/wrapper-validation@v3
+
build:
runs-on: ubuntu-20.04
- name: Java ${{ matrix.java }}
+ name: Build with Java ${{ matrix.java }}
+ needs: [ validation ]
strategy:
+ fail-fast: false
matrix:
- java: [8, 11]
+ # Must upgrade Gradle before we can go past Java 15 here.
+ # https://docs.gradle.org/current/userguide/compatibility.html
+ java: [ 8, 11 ]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Fetch git tags
- run: ./.github/fetch_to_tag.sh
-
- # Our build uses JDK7's rt.jar to make sure the artifact is fully
- # compatible with Java 7, so we let this action set Java 7 up for us
- # and we store its JAVA_HOME
- - name: Set up Java 7
- uses: actions/setup-java@v1
- with:
- java-version: 7
-
- - name: Capture JDK7_HOME
- run: echo "export JDK7_HOME=\"$JAVA_HOME\"" > ~/.jdk7_home
+ run: ./.github/scripts/fetch_to_tag.sh
- - name: Set up Java 17 (needed for Spring Boot 3)
- uses: actions/setup-java@v1
- with:
- java-version: 17
-
- - name: Capture JDK17_HOME
- run: echo "export JDK17_HOME=\"$JAVA_HOME\"" > ~/.jdk17_home
-
- # This is the JDK that'll run the build
- name: Set up Java ${{ matrix.java }}
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
+ distribution: 'zulu'
+ cache: 'gradle'
- - name: Cache Gradle packages
- uses: actions/cache@v2
- with:
- path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- key: ${{ runner.os }}-gradle-${{ matrix.java }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
- restore-keys: |
- ${{ runner.os }}-gradle-${{ matrix.java }}-
+ # gradle/actions/setup-gradle@v3 might offer better caching and other benefits through better integration.
+ # https://github.com/gradle/actions/blob/main/docs/setup-gradle.md
- name: Environment info
run: |
@@ -63,26 +60,26 @@ jobs:
echo ANDROID_SDK_ROOT: ${ANDROID_SDK_ROOT}
- name: Build
- run: 'source ~/.jdk7_home && ./gradlew clean build'
+ run: ./gradlew clean build
- - name: Check
- run: 'source ~/.jdk7_home && ./gradlew clean check'
-
- - name: Cleanup Gradle cache
- # Recommended by https://docs.github.com/en/actions/guides/building-and-testing-java-with-gradle
- run: |
- rm -f ~/.gradle/caches/modules-2/modules-2.lock
- rm -f ~/.gradle/caches/modules-2/gc.properties
+ - name: Upload build reports
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: java-${{ matrix.java }}-build-reports
+ path: |
+ **/build/reports/*
release:
runs-on: ubuntu-20.04
+ name: Release
# It would be nice to run this as part of the build job, since it would be
# faster and have less duplicated Yaml, it would not be possible to check
# for all matrix results before publishing if this were just another step
# in that job.
- needs: build
+ needs: [ build ]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Set up Java 11 for the Android SDK Manager
uses: actions/setup-java@v1
@@ -94,47 +91,18 @@ jobs:
echo "Android SDK Manager version: `${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --version`"
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "platforms;android-27" "build-tools;28.0.3"
- - name: Set up Java 7
- uses: actions/setup-java@v1
- with:
- java-version: 7
-
- - name: Capture JDK7_HOME
- run: echo "export JDK7_HOME=\"$JAVA_HOME\"" > ~/.jdk7_home
-
- - name: Set up Java 8
- uses: actions/setup-java@v1
+ - name: Set up Java 8 for the build
+ uses: actions/setup-java@v4
with:
java-version: 8
-
- - name: Cache Gradle packages
- uses: actions/cache@v2
- with:
- path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- key: ${{ runner.os }}-gradle-8-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
- restore-keys: |
- ${{ runner.os }}-gradle-8-
+ distribution: 'zulu'
+ cache: 'gradle'
- name: Release
env:
- SECRING_GPG_IV: ${{ secrets.SECRING_GPG_IV }}
- SECRING_GPG_KEY: ${{ secrets.SECRING_GPG_KEY }}
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- ENCRYPTED_GPG_KEY_LOCATION: ./.github/secring.gpg.enc
- GPG_KEY_LOCATION: ./.github/secring.gpg
+ RELEASE_GPG_PRIVATE_KEY: ${{ secrets.RELEASE_GPG_PRIVATE_KEY }}
+ RELEASE_GPG_PRIVATE_KEY_PASSPHRASE: ${{ secrets.RELEASE_GPG_PRIVATE_KEY_PASSPHRASE }}
NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
run: |
- if test "$GITHUB_REPOSITORY" = "rollbar/rollbar-java" -a "$GITHUB_BASE_REF" = ""; then
- openssl enc -aes-256-cbc -K "$SECRING_GPG_KEY" -iv "$SECRING_GPG_IV" -in "$ENCRYPTED_GPG_KEY_LOCATION" -out "$GPG_KEY_LOCATION" -d
- fi &&
- source ~/.jdk7_home &&
- ./.github/release.sh
-
- - name: Cleanup Gradle cache
- run: |
- rm -f ~/.gradle/caches/modules-2/modules-2.lock
- rm -f ~/.gradle/caches/modules-2/gc.properties
+ ./gradlew -Dorg.gradle.internal.http.socketTimeout=300000 -Dorg.gradle.internal.http.connectionTimeout=300000 publishToSonatype
diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml
deleted file mode 100644
index 0bde8aec..00000000
--- a/.github/workflows/gradle-wrapper-validation.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-name: "Validate Gradle Wrapper"
-on: [push, pull_request]
-
-jobs:
- validation:
- name: "Gradle wrapper validation"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: gradle/wrapper-validation-action@v1
diff --git a/build.gradle b/build.gradle
index 6cfb41a3..67f5e7c1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -31,9 +31,7 @@ allprojects {
}
subprojects { project ->
- if (!project.name.contains('android') &&
- !project.parent.name.equals("examples") &&
- !project.name.contains('examples')) {
+ if (!project.name.contains('android') && !project.parent.name.equals("examples") && !project.name.contains('examples')) {
apply plugin: 'java-library'
apply from: "$rootDir/gradle/release.gradle"
@@ -62,23 +60,16 @@ subprojects { project ->
}
compileJava {
- if (JavaVersion.current().compareTo(JavaVersion.VERSION_1_9) >= 0) {
- // Use the --release javac flag, available since JDK9, which is equivalent to setting
- // the source, target, and bootstrap classpath, and catches all usages of stdlib
- // features not available in the target version.
- options.release = 7
+ if (JavaVersion.current().isJava9Compatible()) {
+ options.release = 8
} else {
- sourceCompatibility = JavaVersion.VERSION_1_7
- targetCompatibility = JavaVersion.VERSION_1_7
- }
-
- if (System.env.JDK7_HOME) {
- options.bootstrapClasspath = files("${System.env.JDK7_HOME}/jre/lib/rt.jar")
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
}
}
compileTestJava {
- if (JavaVersion.current().compareTo(JavaVersion.VERSION_1_9) >= 0) {
+ if (JavaVersion.current().isJava9Compatible()) {
options.release = 8
} else {
sourceCompatibility = JavaVersion.VERSION_1_8
diff --git a/examples/rollbar-android/build.gradle b/examples/rollbar-android/build.gradle
index 83d5bb9f..41e42406 100644
--- a/examples/rollbar-android/build.gradle
+++ b/examples/rollbar-android/build.gradle
@@ -4,7 +4,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.6.2'
+ classpath 'com.android.tools.build:gradle:4.2.2'
}
}
@@ -12,10 +12,12 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 27
- buildToolsVersion "28.0.3"
+ buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.rollbar.example.android"
minSdkVersion 16
+ // FIXME: Pending further discussion
+ //noinspection ExpiredTargetSdkVersion
targetSdkVersion 27
versionCode 1
versionName "1.0"
diff --git a/examples/rollbar-spring-boot3-webmvc/build.gradle b/examples/rollbar-spring-boot3-webmvc/build.gradle
index 2e3128e6..7be0c15b 100644
--- a/examples/rollbar-spring-boot3-webmvc/build.gradle
+++ b/examples/rollbar-spring-boot3-webmvc/build.gradle
@@ -6,7 +6,11 @@ plugins {
group = 'com.rollbar.example'
version = VERSION_NAME
-sourceCompatibility = '17'
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+}
repositories {
mavenLocal()
diff --git a/gradle.properties b/gradle.properties
index e977b663..875a000b 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,4 +1,4 @@
-VERSION_NAME=1.10.3
+VERSION_NAME=2.0.0-SNAPSHOT
GROUP=com.rollbar
POM_DESCRIPTION=For connecting your applications built on the JVM to Rollbar for Error Reporting
diff --git a/gradle/release.gradle b/gradle/release.gradle
index c1e150c6..aef0d97d 100644
--- a/gradle/release.gradle
+++ b/gradle/release.gradle
@@ -1,8 +1,7 @@
apply plugin: 'signing'
apply plugin: 'maven-publish'
-
-
apply plugin: "de.marcphilipp.nexus-publish"
+
nexusPublishing {
repositories {
sonatype {
@@ -12,16 +11,6 @@ nexusPublishing {
}
}
-gradle.taskGraph.whenReady { taskGraph ->
- if (taskGraph.allTasks.any { it instanceof Sign }) {
- allprojects {
- ext."signing.keyId" = System.getenv("GPG_KEY_ID")
- ext."signing.secretKeyRingFile" = System.getenv("GPG_KEY_LOCATION")
- ext."signing.password" = System.getenv("GPG_PASSPHRASE")
- }
- }
-}
-
afterEvaluate {
if (project.parent != null && !project.parent.name.equals("examples") && !project.name.contains('examples')) {
if (!project.hasProperty('android')) {
@@ -93,6 +82,9 @@ afterEvaluate {
signing {
required true
+ useInMemoryPgpKeys(
+ findProperty("signingKey") ?: System.getenv("RELEASE_GPG_PRIVATE_KEY"),
+ findProperty("signingPassword") ?: System.getenv("RELEASE_GPG_PRIVATE_KEY_PASSPHRASE"))
sign publishing.publications.maven
}
}
@@ -147,7 +139,7 @@ afterEvaluate {
name = POM_NAME
description = POM_DESCRIPTION
url = POM_URL
-
+
scm {
url = POM_SCM_URL
connection = POM_SCM_CONNECTION
@@ -175,6 +167,9 @@ afterEvaluate {
}
signing {
required true
+ useInMemoryPgpKeys(
+ findProperty("signingKey") ?: System.getenv("RELEASE_GPG_PRIVATE_KEY"),
+ findProperty("signingPassword") ?: System.getenv("RELEASE_GPG_PRIVATE_KEY_PASSPHRASE"))
sign publishing.publications.release
}
}
diff --git a/rollbar-android/build.gradle b/rollbar-android/build.gradle
index 58f54cd8..7a155de4 100644
--- a/rollbar-android/build.gradle
+++ b/rollbar-android/build.gradle
@@ -4,7 +4,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.6.2'
+ classpath 'com.android.tools.build:gradle:4.2.2'
}
}
@@ -19,10 +19,12 @@ apply from: "$rootDir/gradle/android.quality.gradle"
android {
compileSdkVersion 27
- buildToolsVersion '28.0.3'
+ buildToolsVersion '30.0.3' // Going above here requires bumping the AGP to version 4+
defaultConfig {
minSdkVersion 16
+ // FIXME: Pending further discussion
+ //noinspection ExpiredTargetSdkVersion
targetSdkVersion 27
consumerProguardFiles 'proguard-rules.pro'
manifestPlaceholders = [notifierVersion: VERSION_NAME]
diff --git a/rollbar-android/src/main/AndroidManifest.xml b/rollbar-android/src/main/AndroidManifest.xml
index 48596ed4..9eb5a74b 100644
--- a/rollbar-android/src/main/AndroidManifest.xml
+++ b/rollbar-android/src/main/AndroidManifest.xml
@@ -4,9 +4,9 @@
android:versionCode="1"
android:versionName="1.0" >
+
+
-
-
\ No newline at end of file
diff --git a/rollbar-java/src/test/java/com/rollbar/notifier/provider/notifier/VersionHelperTest.java b/rollbar-java/src/test/java/com/rollbar/notifier/provider/notifier/VersionHelperTest.java
index 2c174517..e92232a4 100644
--- a/rollbar-java/src/test/java/com/rollbar/notifier/provider/notifier/VersionHelperTest.java
+++ b/rollbar-java/src/test/java/com/rollbar/notifier/provider/notifier/VersionHelperTest.java
@@ -10,9 +10,9 @@ public class VersionHelperTest {
@Test
public void shouldReturnVersion() {
VersionHelper helper = new VersionHelper();
- // It will fail when we upgrade to 2.x, but it's stable enough. Better than nothing when running
+ // It will fail when we upgrade to 3.x, but it's stable enough. Better than nothing when running
// from an IDE, without the version property that we set in Gradle.
- assertThat(helper.version(), startsWith("1."));
+ assertThat(helper.version(), startsWith("2."));
}
@Test
diff --git a/rollbar-reactive-streams-reactor/build.gradle b/rollbar-reactive-streams-reactor/build.gradle
index f7dc5aac..332169cf 100644
--- a/rollbar-reactive-streams-reactor/build.gradle
+++ b/rollbar-reactive-streams-reactor/build.gradle
@@ -34,18 +34,6 @@ dependencies {
}
}
-compileJava {
- if (JavaVersion.current() >= JavaVersion.VERSION_1_9) {
- options.release = 8
- } else {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
-
- // Unset this since it's been set to Java 7's rt.jar by the parent project
- options.bootstrapClasspath = null
-}
-
test {
// Our core suite uses Junit 5 to take advantage of reactor's Blockhound verification.
useJUnitPlatform()