Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
java_version: [ '8' ]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can the versions remain here so they don't need to be duplicated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to continue to support java 8 - otherwise we break these clients

os: [ ubuntu-latest, windows-latest, macOS-latest ]
steps:
- uses: actions/checkout@v2
- name: Set up JDK ${{ matrix.java_version }}
uses: actions/setup-java@v1
- name: Set up JDKs
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java_version }}
distribution: 'temurin'
java-version: |
11
17
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
Expand All @@ -38,10 +40,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 8
uses: actions/setup-java@v1
- name: Set up JDKs
uses: actions/setup-java@v5
with:
java-version: 8
distribution: 'temurin'
java-version: |
11
17
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Jar
Expand All @@ -60,5 +65,4 @@ jobs:
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_KEY_PASSPHRASE }}
MAVEN_CENTRAL_TOKEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
MAVEN_CENTRAL_TOKEN_PASSWORD: ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
run: ./gradlew signArchives uploadArchives -Pversion=$SNAPSHOT_VERSION -PossrhUsername=${MAVEN_CENTRAL_TOKEN_USERNAME} -PossrhPassword=${MAVEN_CENTRAL_TOKEN_PASSWORD} -Psign=true

run: ./gradlew publish -Pversion=$SNAPSHOT_VERSION -PossrhUsername=${MAVEN_CENTRAL_TOKEN_USERNAME} -PossrhPassword=${MAVEN_CENTRAL_TOKEN_PASSWORD} -Psign=true
8 changes: 8 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up JDKs
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: |
11
17

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
Expand Down
13 changes: 8 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: false
DRY_RUN: true
- name: Set up JDK 8
uses: actions/setup-java@v1
- name: Set up JDKs
uses: actions/setup-java@v5
with:
java-version: 8
distribution: 'temurin'
java-version: |
11
17
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Jar
Expand All @@ -33,7 +36,7 @@ jobs:
MAVEN_CENTRAL_TOKEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
MAVEN_CENTRAL_TOKEN_PASSWORD: ${{ secrets.MAVEN_CENTRAL_TOKEN_PASSWORD }}
RELEASE_VERSION: ${{ steps.tag_version_dry_run.outputs.tag }}
run: ./gradlew -Pversion=$RELEASE_VERSION signArchives uploadArchives -PossrhUsername=${MAVEN_CENTRAL_TOKEN_USERNAME} -PossrhPassword=${MAVEN_CENTRAL_TOKEN_PASSWORD} -Psign=true
run: ./gradlew -Pversion=$RELEASE_VERSION publish -PossrhUsername=${MAVEN_CENTRAL_TOKEN_USERNAME} -PossrhPassword=${MAVEN_CENTRAL_TOKEN_PASSWORD} -Psign=true
- name: Close & Release Staging Repository
env:
MAVEN_CENTRAL_TOKEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
Expand All @@ -55,4 +58,4 @@ jobs:
uses: softprops/action-gh-release@v1
with:
body: ${{steps.github_release.outputs.changelog}}
tag_name: ${{ steps.tag_version.outputs.tag }}
tag_name: ${{ steps.tag_version.outputs.tag }}
11 changes: 4 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,7 @@ Gradle release plugin is not currently working so this is a manual process at th

```
gpg --import private.key
cd ~/.gnupg
gpg -k
gpg --export-secret-key YOUR_KEY_ID > ~/.gnupg/secring.gpg
```

## Preparing
Expand All @@ -62,13 +60,12 @@ gpg --export-secret-key YOUR_KEY_ID > ~/.gnupg/secring.gpg
```
export SONAR_USERNAME=?
export SONAR_PASSWORD=?
export GPG_KEY_ID=?
export GPG_KEY_PASSPHRASE=?
export PATH_TO_SECRING_GPG=~/.gnupg/secring.gpg
export ORG_GRADLE_PROJECT_signingKey="$(cat private.key)"
export ORG_GRADLE_PROJECT_signingPassword=?

# I found shadowed classes are not included if you don't separate the gradle operations
./gradlew clean shadowJar
./gradlew signArchives uploadArchives -PossrhUsername=${SONAR_USERNAME} -PossrhPassword=${SONAR_PASSWORD} -Psigning.keyId=${GPG_KEY_ID} -Psigning.password=${GPG_KEY_PASSPHRASE} -Psigning.secretKeyRingFile=${PATH_TO_SECRING_GPG}
./gradlew publish -PossrhUsername=${SONAR_USERNAME} -PossrhPassword=${SONAR_PASSWORD} -Psign=true
```

## Releasing [Full Tutorial](https://central.sonatype.org/pages/ossrh-guide.html)
Expand All @@ -86,4 +83,4 @@ export PATH_TO_SECRING_GPG=~/.gnupg/secring.gpg

1. Checkout master branch
1. Increment version number in `gradle.properties`
1. Create pull request for merge
1. Create pull request for merge
25 changes: 19 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ testImplementation 'io.github.origin-energy:java-snapshot-testing-junit5:4.+'
testImplementation("org.slf4j:slf4j-simple:2.0.0-alpha0")

// Optional: Many will want to serialize into JSON. In this case you should also add the Jackson plugin
testImplementation 'io.github.origin-energy:java-snapshot-testing-plugin-jackson3:4.+'
testImplementation 'tools.jackson.core:jackson-core:3.1.0'
testImplementation 'tools.jackson.core:jackson-databind:3.1.0'

// For Jackson 2 use the dedicated plugin and serializer classes instead
testImplementation 'io.github.origin-energy:java-snapshot-testing-plugin-jackson:4.+'
testImplementation 'com.fasterxml.jackson.core:jackson-core:2.11.3'
testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.11.3'
Expand All @@ -49,8 +54,12 @@ testRuntimeOnly 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.3'
```text
serializer=au.com.origin.snapshots.serializers.v1.ToStringSnapshotSerializer
serializer.base64=au.com.origin.snapshots.serializers.v1.Base64SnapshotSerializer
serializer.json=au.com.origin.snapshots.jackson.serializers.v1.JacksonSnapshotSerializer
serializer.orderedJson=au.com.origin.snapshots.jackson.serializers.v1.DeterministicJacksonSnapshotSerializer
serializer.json=au.com.origin.snapshots.jackson3.serializers.v1.Jackson3SnapshotSerializer
serializer.orderedJson=au.com.origin.snapshots.jackson3.serializers.v1.DeterministicJackson3SnapshotSerializer

# Jackson 2 alternative
# serializer.json=au.com.origin.snapshots.jackson.serializers.v1.JacksonSnapshotSerializer
# serializer.orderedJson=au.com.origin.snapshots.jackson.serializers.v1.DeterministicJacksonSnapshotSerializer
comparator=au.com.origin.snapshots.comparators.v1.PlainTextEqualsComparator
reporters=au.com.origin.snapshots.reporters.v1.PlainTextSnapshotReporter
snapshot-dir=__snapshots__
Expand Down Expand Up @@ -151,14 +160,18 @@ We currently support:
Plugins

- [Jackson for JSON serialization](https://search.maven.org/search?q=a:java-snapshot-testing-plugin-jackson)
- [Jackson 3 for JSON serialization](https://search.maven.org/search?q=a:java-snapshot-testing-plugin-jackson3)
- You need jackson on your classpath (Gradle example)
```groovy
// Required java-snapshot-testing peer dependencies
// Jackson 2 plugin
testImplementation 'io.github.origin-energy:java-snapshot-testing-plugin-jackson:4.+'
testImplementation 'com.fasterxml.jackson.core:jackson-core:2.11.3'
testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.11.3'
// Optional java-snapshot-testing peer dependencies
testRuntimeOnly 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.3'
testRuntimeOnly 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.3'

// Jackson 3 plugin
testImplementation 'io.github.origin-energy:java-snapshot-testing-plugin-jackson3:4.+'
testImplementation 'tools.jackson.core:jackson-core:3.1.0'
testImplementation 'tools.jackson.core:jackson-databind:3.1.0'
```

## How does it work?
Expand Down
72 changes: 55 additions & 17 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,41 +1,79 @@
import org.gradle.api.tasks.compile.GroovyCompile
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.api.tasks.testing.Test

plugins {
id 'net.researchgate.release' version '2.6.0' apply false
id 'com.github.johnrengelman.shadow' version '5.2.0' apply false
id 'com.gradleup.shadow' version '9.3.2' apply false
id 'io.codearte.nexus-staging' version '0.22.0'
id "com.diffplug.spotless" version "6.11.0" apply false
id 'com.diffplug.spotless' version '8.4.0' apply false
}

ext {
junit5Version = '5.10.2'
lombokVersion = '1.18.20'
slf4jVersion = '2.0.0-alpha0'
assertjVersion = '3.11.1'
}

subprojects { subproject ->
// FIXME this plugin is currently not working for multi-module projects even when defined at the top level only
// Will need to release and TAG manually for now
subproject.apply plugin: 'net.researchgate.release'
subproject.apply plugin: 'java-library'
subproject.apply plugin: 'com.github.johnrengelman.shadow'
subproject.apply plugin: 'com.gradleup.shadow'
subproject.apply plugin: 'maven-publish'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

repositories {
mavenCentral()
}

tasks.withType(JavaCompile).configureEach {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(11)
}
}

tasks.withType(Javadoc).configureEach {
javadocTool = javaToolchains.javadocToolFor {
languageVersion = JavaLanguageVersion.of(11)
}
}

tasks.withType(Test).configureEach {
javaLauncher = javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(11)
}
}

tasks.withType(GroovyCompile).configureEach {
javaLauncher = javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(11)
}
}

shadowJar {
classifier = ''
archiveClassifier = ''
relocate 'org.assertj', 'shadow.org.assertj'
relocate 'org.opentest4j', 'shadow.org.opentest4j'
exclude "module-info.class"
exclude 'module-info.class'
}

jar {
archiveClassifier = 'thin'
}

dependencies {
// Lombok
compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'
testCompileOnly 'org.projectlombok:lombok:1.18.20'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
Comment thread
jackmatt2 marked this conversation as resolved.
compileOnly "org.projectlombok:lombok:${project.lombokVersion}"
annotationProcessor "org.projectlombok:lombok:${project.lombokVersion}"
testCompileOnly "org.projectlombok:lombok:${project.lombokVersion}"
testAnnotationProcessor "org.projectlombok:lombok:${project.lombokVersion}"

// Logging implementation
compileOnly 'org.slf4j:slf4j-api:2.0.0-alpha0'
compileOnly "org.slf4j:slf4j-api:${project.slf4jVersion}"
}

// Add verbose logging for Github Actions
Comment thread
jackmatt2 marked this conversation as resolved.
Expand All @@ -45,4 +83,4 @@ subprojects { subproject ->
exceptionFormat "full"
}
}
}
}
9 changes: 9 additions & 0 deletions gradle/junit5.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dependencies {
testImplementation platform("org.junit:junit-bom:${project.junit5Version}")
testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

test {
useJUnitPlatform()
}
Loading
Loading