Skip to content

Commit 9efe330

Browse files
authored
Restore java 8 support (#759)
* restore java 8 support * revert logback version * fix publishing * fix upload to s3 * cleanup * add comment about native-server subproject
1 parent 0dbe63a commit 9efe330

File tree

3 files changed

+55
-32
lines changed

3 files changed

+55
-32
lines changed

.github/workflows/ci.yml

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
uses: actions/setup-java@v2
2222
with:
2323
distribution: 'temurin'
24-
java-version: 11
24+
java-version: 8
2525

2626
- name: Cache SBT
2727
id: cache-sbt
@@ -35,7 +35,7 @@ jobs:
3535

3636
- name: Run tests
3737
id: run-tests
38-
run: SCALA_MAJOR_VERSION=${{ env.scala }} sbt test
38+
run: SCALA_MAJOR_VERSION=${{ env.scala }} sbt root/test
3939

4040
ci-2-13:
4141
# run on external PRs, but not on internal PRs since those will be run by push to branch
@@ -52,7 +52,7 @@ jobs:
5252
uses: actions/setup-java@v2
5353
with:
5454
distribution: 'temurin'
55-
java-version: 11
55+
java-version: 8
5656

5757
- name: Cache SBT
5858
id: cache-sbt
@@ -66,7 +66,7 @@ jobs:
6666

6767
- name: Run tests
6868
id: run-tests
69-
run: SCALA_MAJOR_VERSION=${{ env.scala }} sbt test
69+
run: SCALA_MAJOR_VERSION=${{ env.scala }} sbt root/test
7070

7171
ci-docker:
7272
# run on external PRs, but not on internal PRs since those will be run by push to branch
@@ -104,8 +104,7 @@ jobs:
104104
- name: Build native docker image
105105
run: sbt "project nativeServer; assembly; GraalVMNativeImage / packageBin; Docker / publishLocal"
106106

107-
publish:
108-
name: Publish release
107+
publish-jar:
109108
needs: [ci-2-12, ci-2-13, ci-docker]
110109
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
111110
runs-on: ubuntu-20.04
@@ -117,7 +116,7 @@ jobs:
117116
uses: actions/setup-java@v2
118117
with:
119118
distribution: 'temurin'
120-
java-version: 11
119+
java-version: 8
121120

122121
- name: Cache sbt
123122
uses: actions/cache@v2
@@ -128,9 +127,6 @@ jobs:
128127
~/.coursier
129128
key: ${{ runner.os }}-sbt-release-${{ hashFiles('**/build.sbt') }}
130129

131-
- name: Compile
132-
run: sbt compile
133-
134130
- name: Publish artifacts
135131
run: sbt ci-release
136132
env:
@@ -139,20 +135,8 @@ jobs:
139135
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
140136
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
141137

142-
- name: Login to DockerHub
143-
uses: docker/login-action@v1
144-
with:
145-
username: ${{ secrets.DOCKERHUB_USERNAME }}
146-
password: ${{ secrets.DOCKERHUB_TOKEN }}
147-
148-
- name: Publish JVM docker image
149-
run: sbt "project server; assembly; Docker / publish"
150-
151-
- name: Publish JVM native docker image
152-
run: sbt "project nativeServer; assembly; GraalVMNativeImage / packageBin; Docker / publish"
153-
154138
- name: Upload to S3
155-
run: sbt "server / s3Upload"
139+
run: sbt "project server; assembly; s3Upload"
156140
env:
157141
S3_USER: ${{ secrets.S3_USER }}
158142
S3_PASSWORD: ${{ secrets.S3_PASSWORD }}
@@ -174,3 +158,38 @@ jobs:
174158
version: "v${{ env.VERSION }}"
175159
env:
176160
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
161+
162+
publish-docker:
163+
needs: [ci-2-12, ci-2-13, ci-docker]
164+
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
165+
runs-on: ubuntu-20.04
166+
steps:
167+
- name: Checkout
168+
uses: actions/checkout@v2
169+
170+
- name: Set up JDK
171+
uses: actions/setup-java@v2
172+
with:
173+
distribution: 'temurin'
174+
java-version: 11
175+
176+
- name: Cache sbt
177+
uses: actions/cache@v2
178+
with:
179+
path: |
180+
~/.sbt
181+
~/.ivy2/cache
182+
~/.coursier
183+
key: ${{ runner.os }}-sbt-release-${{ hashFiles('**/build.sbt') }}
184+
185+
- name: Login to DockerHub
186+
uses: docker/login-action@v1
187+
with:
188+
username: ${{ secrets.DOCKERHUB_USERNAME }}
189+
password: ${{ secrets.DOCKERHUB_TOKEN }}
190+
191+
- name: Publish JVM docker image
192+
run: sbt "project server; assembly; Docker / publish"
193+
194+
- name: Publish JVM native docker image
195+
run: sbt "project nativeServer; assembly; GraalVMNativeImage / packageBin; Docker / publish"

build.sbt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ val pureConfig = "com.github.pureconfig" %% "pureconfig" % "0.17.2"
3232
val scalaXml = "org.scala-lang.modules" %% "scala-xml" % "2.1.0"
3333

3434
val scalalogging = "com.typesafe.scala-logging" %% "scala-logging" % "3.9.5"
35-
val logback = "ch.qos.logback" % "logback-classic" % "1.4.4"
35+
val logback = "ch.qos.logback" % "logback-classic" % "1.3.4"
3636
val jclOverSlf4j = "org.slf4j" % "jcl-over-slf4j" % "2.0.3" // needed form amazon java sdk
3737

3838
val scalatest = "org.scalatest" %% "scalatest" % "3.2.14"
@@ -70,7 +70,7 @@ val buildSettings = commonSmlBuildSettings ++ ossPublishSettings ++ Seq(
7070
ScmInfo(url("https://github.com/softwaremill/elasticmq"), "scm:git@github.com:softwaremill/elasticmq.git")
7171
),
7272
scalaVersion := resolvedScalaVersion,
73-
scalacOptions += "-Xasync",
73+
scalacOptions ++= Seq("-Xasync", "-target:jvm-1.8"),
7474
libraryDependencies += scalaXml,
7575
dependencyOverrides := akka25Overrides,
7676
parallelExecution := false,
@@ -89,13 +89,15 @@ val s3Upload = TaskKey[PutObjectResult]("s3-upload", "Uploads files to an S3 buc
8989
lazy val root: Project = (project in file("."))
9090
.enablePlugins(GitVersioning)
9191
.settings(buildSettings)
92-
.settings(name := "elasticmq-root", publishArtifact := false)
93-
.aggregate(commonTest, core, rest, persistence, server, nativeServer, ui)
92+
.settings(name := "elasticmq-root", publish / skip := true)
93+
// we want to build the main jar using java 8, but native-server requires java 11, so it's built separately
94+
// native-server project is only used for building docker with graalvm native image
95+
.aggregate(commonTest, core, rest, persistence, server, ui)
9496

9597
lazy val commonTest: Project = (project in file("common-test"))
9698
.settings(buildSettings)
9799
.settings(name := "elasticmq-common-test")
98-
.settings(Seq(libraryDependencies ++= Seq(scalatest, awaitility, logback), publishArtifact := false))
100+
.settings(Seq(libraryDependencies ++= Seq(scalatest, awaitility, logback), publish / skip := true))
99101

100102
lazy val core: Project = (project in file("core"))
101103
.settings(buildSettings)
@@ -185,7 +187,7 @@ lazy val restSqsTestingAmazonJavaSdk: Project =
185187
Seq(
186188
name := "elasticmq-rest-sqs-testing-amazon-java-sdk",
187189
libraryDependencies ++= Seq(amazonJavaSdkSqs, jclOverSlf4j) ++ common,
188-
publishArtifact := false
190+
publish / skip := true
189191
)
190192
)
191193
.dependsOn(restSqs % "test->test", persistenceFile % "test", persistenceSql % "test")
@@ -268,6 +270,7 @@ lazy val nativeServer: Project = (project in file("native-server"))
268270
libraryDependencies ++= Seq(
269271
"org.graalvm.nativeimage" % "svm" % graalVmVersion % "compile-internal"
270272
),
273+
publish / skip := true,
271274
// configures sbt-native-packager to build app using dockerized graalvm
272275
// docker image source: https://github.com/graalvm/container/pkgs/container/graalvm-ce/versions
273276
(GraalVMNativeImage / containerBuildImage) := GraalVMNativeImagePlugin
@@ -344,7 +347,7 @@ lazy val performanceTests: Project = (project in file("performance-tests"))
344347
Seq(
345348
name := "elasticmq-performance-tests",
346349
libraryDependencies ++= Seq(amazonJavaSdkSqs, jclOverSlf4j, logback) ++ common,
347-
publishArtifact := false
350+
publish / skip := true
348351
)
349352
)
350353
.dependsOn(core, restSqs, commonTest % "test")
@@ -407,7 +410,8 @@ lazy val ui = (project in file("ui"))
407410
(Compile / compile).value
408411
},
409412
cleanFiles += baseDirectory.value / "build",
410-
Compile / unmanagedResourceDirectories += baseDirectory.value / "build"
413+
Compile / unmanagedResourceDirectories += baseDirectory.value / "build",
414+
publish / skip := true
411415
)
412416

413417
def haltOnCmdResultError(result: Int) {

core/src/main/scala/org/elasticmq/NodeAddress.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ case class NodeAddress(
1010
def fullAddress: String = protocol + "://" + hostAndPort + suffix
1111
def isWildcard: Boolean = host == "*"
1212
def contextPathStripped: String = contextPath.stripPrefix("/").stripSuffix("/")
13-
def suffix = if (contextPath.isBlank) "" else "/" + contextPathStripped
13+
def suffix: String = if (contextPath.trim.isEmpty) "" else "/" + contextPathStripped
1414
}

0 commit comments

Comments
 (0)