Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[master] Upgrade dependencies to fix CI cron build #11081

Merged
merged 19 commits into from Jan 18, 2022
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 11 additions & 1 deletion .scala-steward.conf
Expand Up @@ -24,7 +24,10 @@ updates.ignore = [
{ groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-jsr310" },
{ groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-jdk8" },
{ groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-pcollections" },
{ groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-guava" }
{ groupId = "com.fasterxml.jackson.datatype", artifactId = "jackson-datatype-guava" },
// these will get updated along with selenium-api, so no need to update them separately
{ groupId = "org.seleniumhq.selenium", artifactId = "selenium-support" },
{ groupId = "org.seleniumhq.selenium", artifactId = "selenium-firefox-driver" }
]

updates.pin = [
Expand All @@ -36,6 +39,13 @@ updates.pin = [
{ groupId = "com.zaxxer", artifactId = "HikariCP", version = "4." },
// caffeine 3+ requires Java 11. See https://github.com/ben-manes/caffeine/releases/tag/v3.0.0
{ groupId = "com.github.ben-manes.caffeine", version = "2." },
// FluentLenium 4+ requires Java 11.
// See https://github.com/FluentLenium/FluentLenium/releases/tag/v4.0.0 and https://fluentlenium.com/quickstart/#choose-the-right-version
{ groupId = "org.fluentlenium", version = "3." },
// FluentLenium 3 only works with Selenium 3
{ groupId = "org.seleniumhq.selenium", artifactId = "selenium-api", version = "3." },
// Selenium 3 is only compatible with htmlunit-driver 2, see https://github.com/SeleniumHQ/htmlunit-driver/releases/tag/2.56.0
{ groupId = "org.seleniumhq.selenium", artifactId = "htmlunit-driver", version = "2." },
// Hibernate Validator 7.0 is jakarta.validation based, 6.2 is javax.validation based
// and the Spring libraries we use still depends on Hibernate Validator 6.x
// See https://github.com/playframework/playframework/pull/10616#issuecomment-758273638
Expand Down
22 changes: 14 additions & 8 deletions .travis.yml
Expand Up @@ -11,7 +11,7 @@ env:
global:
- secure: "NS2hMbBcmi6EF4QxtcNs4A2ZuNmIdLYQRJUWWejgnD4YtcsmoVjxrHRedqrnDdui4DyvaxWhg/3Uds23jEKTSbbh3ZphLO77BVgM2nUGUvVoa4i6qGF2eZFlIhq2G1gM700GPV7X4KmyjYi2HtH8CWBTkqP3g0An63mCZw/Gnlk="
# These are the versions used for (scripted) tests. The versions Play is build with however are defined in interplay.
- SCRIPTED_SBT_1_5: "1.5.8"
- SCRIPTED_SBT_1_6: "1.6.1"
- TEST_SCALA_2_13: "2.13.7"
jobs:
- TRAVIS_JDK=11
Expand All @@ -29,7 +29,7 @@ install: jabba install $(jabba ls-remote "adopt@~1.$TRAVIS_JDK.0-0" --latest=pat
stages:
- validations
- test
- cron-test-sbt-1.5.x
- test-sbt-1.6.x
Copy link
Member Author

Choose a reason for hiding this comment

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

IMHO we should run the scripted test for each pr build, not just daily, to catched errors as early as possible. Actually that is what we did until we dropped Scala 2.12: https://github.com/playframework/playframework/pull/10956/files#diff-6ac3f79fc25d95cd1e3d51da53a4b21b939437392578a35ae8cd6d5366ca5485L82
So probably I just forgot to change that back then.

- java8

jobs:
Expand All @@ -49,7 +49,7 @@ jobs:
name: published-local-jdk8
paths: "$HOME/.ivy2/local/com.typesafe.play"
- script: scripts/validate-code
name: "Code validations (format, binary compatibilty, whitesource, etc.)"
name: "Code validations (format, binary compatibilty, etc.)"
- script: scripts/validate-docs
name: "Validate docs (links, sample code, etc.)"
- script: scripts/validate-microbenchmarks
Expand All @@ -64,11 +64,17 @@ jobs:
- script: scripts/test-docs $TEST_SCALA_2_13
name: "Run documentation tests 2.13"

# Test against sbt 1.5.x, but only for cron builds
- stage: cron-test-sbt-1.5.x
name: "Run tests for 1.5.x and Scala 2.13.x"
script: scripts/test-scripted $SCRIPTED_SBT_1_5 $TEST_SCALA_2_13
if: type = cron
- stage: test-sbt-1.6.x
name: "Run scripted tests (a) for sbt 1.6.x and Scala 2.13.x"
script: scripts/test-scripted $SCRIPTED_SBT_1_6 $TEST_SCALA_2_13 'play-sbt-plugin/*1of3'
workspaces:
use: published-local
- name: "Run scripted tests (b) for sbt 1.6.x and Scala 2.13.x"
script: scripts/test-scripted $SCRIPTED_SBT_1_6 $TEST_SCALA_2_13 'play-sbt-plugin/*2of3'
workspaces:
use: published-local
- name: "Run scripted tests (c) for sbt 1.6.x and Scala 2.13.x"
script: scripts/test-scripted $SCRIPTED_SBT_1_6 $TEST_SCALA_2_13 'play-sbt-plugin/*3of3'
Copy link
Member Author

Choose a reason for hiding this comment

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

workspaces:
use: published-local

Expand Down
2 changes: 0 additions & 2 deletions build.sbt
Expand Up @@ -241,7 +241,6 @@ lazy val SbtPluginProject = PlaySbtPluginProject("Sbt-Plugin", "dev-mode/sbt-plu
lazy val SbtScriptedToolsProject = PlaySbtPluginProject("Sbt-Scripted-Tools", "dev-mode/sbt-scripted-tools")
.enablePlugins(SbtPlugin)
.dependsOn(SbtPluginProject)
.settings(disableNonLocalPublishing)

lazy val PlayLogback = PlayCrossBuiltProject("Play-Logback", "core/play-logback")
.settings(
Expand Down Expand Up @@ -462,7 +461,6 @@ lazy val nonUserProjects = Seq[ProjectReference](

lazy val PlayFramework = Project("Play-Framework", file("."))
.enablePlugins(PlayRootProject)
.enablePlugins(PlayWhitesourcePlugin)
.settings(
playCommonSettings,
scalaVersion := (PlayProject / scalaVersion).value,
Expand Down
Expand Up @@ -9,8 +9,8 @@ play.server {
SO_KEEPALIVE = true
TCP_NODELAY = true
TCP_FASTOPEN_CONNECT = true
"io.netty.channel.ChannelOption#TCP_FASTOPEN" = 3
Copy link
Member Author

Choose a reason for hiding this comment

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

Because the cron build for the master branch was broken since month, it never reported that this scripted test actually is broken, also see #11076 (comment)

"io.netty.channel.unix.UnixChannelOption#SO_REUSEPORT" = false
"io.netty.channel.epoll.EpollChannelOption#TCP_FASTOPEN" = 3
bar = "xyz"
}
}
Expand Down
Expand Up @@ -11,5 +11,5 @@
[DEBUG] play.core.server.NettyServer - Setting Netty channel option SO_KEEPALIVE to true
[WARN] play.core.server.NettyServer - Ignoring unknown Netty channel option: bar
[WARN] play.core.server.NettyServer - Valid values can be found at http://netty.io/4.1/api/io/netty/channel/ChannelOption.html
[DEBUG] play.core.server.NettyServer - Setting Netty channel option io.netty.channel.epoll.EpollChannelOption#TCP_FASTOPEN to 3
[DEBUG] play.core.server.NettyServer - Setting Netty channel option io.netty.channel.ChannelOption#TCP_FASTOPEN to 3
[DEBUG] play.core.server.NettyServer - Setting Netty channel option io.netty.channel.unix.UnixChannelOption#SO_REUSEPORT to false
2 changes: 1 addition & 1 deletion documentation/manual/hacking/Translations.md
Expand Up @@ -39,7 +39,7 @@ translation-project
`build.properties` should contain the sbt version, ie:

```
sbt.version=1.5.8
sbt.version=1.6.1
```

`plugins.sbt` should include the Play docs sbt plugin, ie:
Expand Down
Expand Up @@ -20,13 +20,13 @@ Where the "x" in `2.9.x` is the minor version of Play you want to use, for insta

### sbt upgrade

Play 2.9 only supports sbt 1.5. To update, change your `project/build.properties` so that it reads:
Play 2.9 only supports sbt 1.6. To update, change your `project/build.properties` so that it reads:

```properties
sbt.version=1.5.8
sbt.version=1.6.1
```

At the time of this writing `1.5.8` is the latest version in the sbt 1.x family, you may be able to use newer versions too. Check the release notes for both Play's minor version [releases](https://github.com/playframework/playframework/releases) and sbt's [releases](https://github.com/sbt/sbt/releases) for details.
At the time of this writing `1.6.1` is the latest version in the sbt 1.x family, you may be able to use newer versions too. Check the release notes for both Play's minor version [releases](https://github.com/playframework/playframework/releases) and sbt's [releases](https://github.com/sbt/sbt/releases) for details.

### Minimum required Java version

Expand Down
2 changes: 1 addition & 1 deletion documentation/project/build.properties
Expand Up @@ -2,4 +2,4 @@
# Copyright (C) Lightbend Inc. <https://www.lightbend.com>
#
# sync with project/build.properties
sbt.version=1.5.8
sbt.version=1.6.1
6 changes: 3 additions & 3 deletions documentation/project/plugins.sbt
Expand Up @@ -11,12 +11,12 @@ lazy val playDocsPlugin = ProjectRef(Path.fileProperty("user.dir").getParentFile
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")

// Add headers to example sources
addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.3.1")
addSbtPlugin("com.lightbend.sbt" % "sbt-java-formatter" % "0.5.1")
addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.6.0")
addSbtPlugin("com.lightbend.sbt" % "sbt-java-formatter" % "0.7.0")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.0.7")

// Required for Tutorial
addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.5.1") // sync with project/plugins.sbt
addSbtPlugin("com.typesafe.play" % "sbt-twirl" % "1.6.0-M1") // sync with project/plugins.sbt

// Required for IDE docs
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
7 changes: 0 additions & 7 deletions project/BuildSettings.scala
Expand Up @@ -18,7 +18,6 @@ import interplay.ScalaVersions._
import sbt._
import sbt.Keys._
import sbt.ScriptedPlugin.autoImport._
import sbtwhitesource.WhiteSourcePlugin.autoImport._

import scala.sys.process.stringToProcess
import scala.util.control.NonFatal
Expand Down Expand Up @@ -396,15 +395,9 @@ object BuildSettings {
)

def disablePublishing = Def.settings(
disableNonLocalPublishing,
(publish / skip) := true,
publishLocal := {},
)
def disableNonLocalPublishing = Def.settings(
// We also don't need to track dependencies for unpublished projects
// so we need to disable WhiteSource plugin.
whitesourceIgnore := true
)

/** A project that runs in the sbt runtime. */
def PlaySbtProject(name: String, dir: String): Project = {
Expand Down
32 changes: 16 additions & 16 deletions project/Dependencies.scala
Expand Up @@ -7,16 +7,16 @@ import Keys._
import buildinfo.BuildInfo

object Dependencies {
val akkaVersion: String = sys.props.getOrElse("akka.version", "2.6.14")
val akkaHttpVersion = sys.props.getOrElse("akka.http.version", "10.1.14")
val akkaVersion: String = sys.props.getOrElse("akka.version", "2.6.18+21-4fb7bd9b-SNAPSHOT")
Copy link
Member Author

Choose a reason for hiding this comment

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

Only temporary, let's use this akka snapshot because it contains akka/akka#31046 to unblock this PR.

val akkaHttpVersion = sys.props.getOrElse("akka.http.version", "10.2.7")

val sslConfig = "com.typesafe" %% "ssl-config-core" % "0.4.3"
val sslConfig = "com.typesafe" %% "ssl-config-core" % "0.6.0"

val playJsonVersion = "2.9.2"
val playJsonVersion = "2.10.0-RC5"

val logback = "ch.qos.logback" % "logback-classic" % "1.2.10"

val specs2Version = "4.12.12"
val specs2Version = "4.13.1"
val specs2Deps = Seq(
"specs2-core",
"specs2-junit",
Expand Down Expand Up @@ -80,10 +80,10 @@ object Dependencies {
)

def scalaReflect(scalaVersion: String) = "org.scala-lang" % "scala-reflect" % scalaVersion % "provided"
val scalaJava8Compat = "org.scala-lang.modules" %% "scala-java8-compat" % "0.9.1"
val scalaJava8Compat = "org.scala-lang.modules" %% "scala-java8-compat" % "1.0.2"
val scalaParserCombinators = Seq("org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2")

val springFrameworkVersion = "5.3.13"
val springFrameworkVersion = "5.3.14"

val javaDeps = Seq(
scalaJava8Compat,
Expand All @@ -93,11 +93,11 @@ object Dependencies {

val joda = Seq(
"joda-time" % "joda-time" % "2.10.13",
"org.joda" % "joda-convert" % "2.2.1"
"org.joda" % "joda-convert" % "2.2.2"
)

val javaFormsDeps = Seq(
"org.hibernate.validator" % "hibernate-validator" % "6.2.0.Final",
"org.hibernate.validator" % "hibernate-validator" % "6.2.1.Final",
("org.springframework" % "spring-context" % springFrameworkVersion)
.exclude("org.springframework", "spring-aop")
.exclude("org.springframework", "spring-beans")
Expand Down Expand Up @@ -192,10 +192,10 @@ object Dependencies {
typesafeConfig,
slf4jSimple,
playFileWatch,
sbtDep("com.typesafe.sbt" % "sbt-twirl" % BuildInfo.sbtTwirlVersion),
sbtDep("com.typesafe.sbt" % "sbt-native-packager" % BuildInfo.sbtNativePackagerVersion),
sbtDep("com.typesafe.sbt" % "sbt-web" % "1.4.4"),
sbtDep("com.typesafe.sbt" % "sbt-js-engine" % "1.2.3"),
sbtDep("com.typesafe.play" % "sbt-twirl" % BuildInfo.sbtTwirlVersion),
sbtDep("com.github.sbt" % "sbt-native-packager" % BuildInfo.sbtNativePackagerVersion),
sbtDep("com.typesafe.sbt" % "sbt-web" % "1.4.4"),
sbtDep("com.typesafe.sbt" % "sbt-js-engine" % "1.2.3"),
logback % Test
) ++ specs2Deps.map(_ % Test)
}
Expand Down Expand Up @@ -225,9 +225,9 @@ object Dependencies {
"com.typesafe.akka" %% "akka-cluster-sharding-typed" % akkaVersion
)

val fluentleniumVersion = "3.7.1"
val fluentleniumVersion = "3.10.1"
// This is the selenium version compatible with the FluentLenium version declared above.
// See http://mvnrepository.com/artifact/org.fluentlenium/fluentlenium-core/3.5.2
// See http://mvnrepository.com/artifact/org.fluentlenium/fluentlenium-core/3.10.1
val seleniumVersion = "3.141.59"

val testDependencies = Seq(junit, junitInterface, guava, findBugs, logback) ++ Seq(
Expand Down Expand Up @@ -263,7 +263,7 @@ object Dependencies {
"com.github.ben-manes.caffeine" % "jcache" % caffeineVersion
) ++ jcacheApi

val playWsStandaloneVersion = "2.1.3"
val playWsStandaloneVersion = "2.2.0-M1"
val playWsDeps = Seq(
"com.typesafe.play" %% "play-ws-standalone" % playWsStandaloneVersion,
"com.typesafe.play" %% "play-ws-standalone-xml" % playWsStandaloneVersion,
Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
Expand Up @@ -2,4 +2,4 @@
# Copyright (C) Lightbend Inc. <https://www.lightbend.com>
#
# sync with documentation/project/build.properties
sbt.version=1.5.8
sbt.version=1.6.1
10 changes: 5 additions & 5 deletions project/plugins.sbt
Expand Up @@ -4,15 +4,15 @@ enablePlugins(BuildInfoPlugin)

// when updating sbtNativePackager version, be sure to also update the documentation links in
// documentation/manual/working/commonGuide/production/Deploying.md
val sbtNativePackager = "1.8.1"
val sbtNativePackager = "1.9.7"
val mima = "1.0.1"
val sbtJavaFormatter = "0.5.0"
val sbtJavaFormatter = "0.7.0"
val sbtJmh = "0.4.3"
val webjarsLocatorCore = "0.48"
val sbtHeader = "5.6.0"
val scalafmt = "2.0.1"
val sbtTwirl: String = sys.props.getOrElse("twirl.version", "1.5.1") // sync with documentation/project/plugins.sbt
val interplay: String = sys.props.getOrElse("interplay.version", "3.0.3")
val sbtTwirl: String = sys.props.getOrElse("twirl.version", "1.6.0-M1") // sync with documentation/project/plugins.sbt
val interplay: String = sys.props.getOrElse("interplay.version", "3.0.4")

buildInfoKeys := Seq[BuildInfoKey](
"sbtNativePackagerVersion" -> sbtNativePackager,
Expand All @@ -24,7 +24,7 @@ logLevel := Level.Warn
scalacOptions ++= Seq("-deprecation", "-language:_")

addSbtPlugin("com.typesafe.play" % "interplay" % interplay)
addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % sbtTwirl)
addSbtPlugin("com.typesafe.play" % "sbt-twirl" % sbtTwirl)
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % mima)
addSbtPlugin("com.lightbend.sbt" % "sbt-bill-of-materials" % "1.0.2")
addSbtPlugin("com.lightbend.sbt" % "sbt-java-formatter" % sbtJavaFormatter)
Expand Down
2 changes: 1 addition & 1 deletion project/project/buildinfo.sbt
Expand Up @@ -2,4 +2,4 @@
// Copyright (C) Lightbend Inc. <https://www.lightbend.com>
//

addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0")
13 changes: 0 additions & 13 deletions scripts/validate-code
Expand Up @@ -23,16 +23,3 @@ end headerCheck "VALIDATED FILE LICENSE HEADERS"
start checkAkkaModuleVersions "VALIDATE AKKA MODULE VERSIONS"
runSbt +checkAkkaModuleVersions
end checkAkkaModuleVersions "VALIDATED AKKA MODULE VERSIONS"


start whitesource "RUNNING WHITESOURCE REPORT"
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
runSbt 'set ThisBuild / credentials += Credentials("whitesource", "whitesourcesoftware.com", "", System.getenv("WHITESOURCE_KEY"))' whitesourceCheckPolicies whitesourceUpdate
else
echo "[info]"
echo "[info] This is a pull request so Whitesource WILL NOT RUN."
echo "[info] It only runs when integrating the code and should not run for PRs. See the page below for details:"
echo "[info] https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions"
echo "[info]"
fi
end whitesource "RUNNING WHITESOURCE REPORT"
Expand Up @@ -332,6 +332,11 @@ public WSRequest setFollowRedirects(boolean followRedirects) {
return converter.apply(request.setFollowRedirects(followRedirects));
}

@Override
public WSRequest setDisableUrlEncoding(boolean disableUrlEncoding) {
return converter.apply(request.setDisableUrlEncoding(disableUrlEncoding));
}

Copy link
Member Author

Choose a reason for hiding this comment

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

These methods were added as part of playframework/play-ws#552

@Override
public WSRequest setVirtualHost(String virtualHost) {
return converter.apply(request.setVirtualHost(virtualHost));
Expand Down Expand Up @@ -394,6 +399,11 @@ public Optional<Boolean> getFollowRedirects() {
return request.getFollowRedirects();
}

@Override
public Optional<Boolean> getDisableUrlEncoding() {
return request.getDisableUrlEncoding();
}

@Override
public String getUrl() {
return request.getUrl();
Expand Down
Expand Up @@ -127,6 +127,10 @@ case class AhcWSRequest(underlying: StandaloneAhcWSRequest) extends WSRequest wi
underlying.withFollowRedirects(follow)
}

override def withDisableUrlEncoding(disableUrlEncoding: Boolean): Self = toWSRequest {
underlying.withDisableUrlEncoding(disableUrlEncoding)
}

override def withRequestTimeout(timeout: Duration): Self = toWSRequest {
underlying.withRequestTimeout(timeout)
}
Expand Down