diff --git a/.github/set_up_cromwell_action/action.yml b/.github/set_up_cromwell_action/action.yml index 13cb11601db..1cbe834d2bd 100644 --- a/.github/set_up_cromwell_action/action.yml +++ b/.github/set_up_cromwell_action/action.yml @@ -3,7 +3,8 @@ name: 'Set Up Cromwell Steps' description: Specific steps that will set up git secrets, java, sbt, and Cromwell on the local machine. inputs: - cromwell_repo_token: #As an input to this action, you are required to pass in a token that can be used to authenticate while checking out Cromwell. + cromwell_repo_token: + description: "As an input to this action, you are required to pass in a token that can be used to authenticate while checking out Cromwell." required: true runs: @@ -12,13 +13,13 @@ runs: #Allows this github action to use a cache to store stuff like Java and sbt files between runs. - uses: actions/checkout@v3 name: Checkout Coursier Cache - - uses: coursier/cache-action@v6 + - uses: coursier/cache-action@v6 name: Enable Coursier Cache #Cromwell requires git-secrets be setup. Here, we set up secrets and verify success with a script. - name: Git secrets setup run: | - git clone https://github.com/awslabs/git-secrets.git ~/git-secrets + git clone --quiet https://github.com/awslabs/git-secrets.git ~/git-secrets cd ~/git-secrets git checkout ad82d68ee924906a0401dfd48de5057731a9bc84 sudo make install @@ -43,5 +44,4 @@ runs: uses: actions/setup-java@v3 with: distribution: temurin - java-version: 11 - + java-version: 17 diff --git a/.github/workflows/chart_update_on_merge.yml b/.github/workflows/chart_update_on_merge.yml index a2b14f2ec65..b3f7199ab35 100644 --- a/.github/workflows/chart_update_on_merge.yml +++ b/.github/workflows/chart_update_on_merge.yml @@ -23,9 +23,10 @@ jobs: repository: broadinstitute/cromwell token: ${{ secrets.BROADBOT_GITHUB_TOKEN }} # Has to be set at checkout AND later when pushing to work path: cromwell - - uses: olafurpg/setup-scala@v10 + - uses: actions/setup-java@v4 with: - java-version: adopt@1.11 + distribution: 'temurin' + java-version: '17' - name: Clone Cromwhelm uses: actions/checkout@v2 with: diff --git a/.github/workflows/docker_build_test.yml b/.github/workflows/docker_build_test.yml index 01c2ea502c9..a50e39a380f 100644 --- a/.github/workflows/docker_build_test.yml +++ b/.github/workflows/docker_build_test.yml @@ -25,9 +25,10 @@ jobs: repository: broadinstitute/cromwell token: ${{ secrets.BROADBOT_GITHUB_TOKEN }} path: cromwell - - uses: olafurpg/setup-scala@v10 + - uses: actions/setup-java@v4 with: - java-version: adopt@1.11 + distribution: 'temurin' + java-version: '17' # The following invocation should be as similar as possible to the one in chart_update_on_merge.yml # To state the obvious: This test should not publish anything. It should simply verify that the build completes. - name: Build Cromwell Docker diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 61ed3c5af41..028b53db130 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -104,6 +104,14 @@ jobs: set -e echo Running test.sh ./src/ci/bin/test.sh + # If a build step fails, activate SSH and idle for 60 minutes + # - name: Setup tmate session + # if: ${{ failure() }} + # uses: mxschmitt/action-tmate@v3 + # timeout-minutes: 60 + # with: + # limit-access-to-actor: true + # detached: true # always() is some github magic that forces the following step to run, even when the previous fails. # Without it, the if statement won't be evaluated on a test failure. - uses: ravsamhq/notify-slack-action@v2 diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index b005da65041..69a90937671 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -20,9 +20,10 @@ jobs: - uses: actions/checkout@v2 # fetch SBT package - - uses: olafurpg/setup-scala@v10 + - uses: actions/setup-java@v4 with: - java-version: adopt@1.11 + distribution: 'temurin' + java-version: '17' # set up SBT cache - uses: actions/cache@v2 diff --git a/.sdkmanrc b/.sdkmanrc index 0262a261019..f3b37566860 100644 --- a/.sdkmanrc +++ b/.sdkmanrc @@ -1,3 +1,3 @@ # Enable auto-env through the sdkman_auto_env config # Add key=value pairs of SDKs to use below -java=11.0.11.hs-adpt +java=17.0.9-tem diff --git a/CHANGELOG.md b/CHANGELOG.md index a581852c02e..d670e74a43e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Cromwell Change Log +## 87 Release Notes + +### Java 17 + +As of this version, a distribution of Java 17 is required to run Cromwell. Cromwell is developed, tested, and +containerized using [Eclipse Temurin](https://adoptium.net/temurin/releases/?version=17). + ## 86 Release Notes ### GCP Batch diff --git a/centaur/src/main/scala/centaur/api/DaemonizedDefaultThreadFactory.scala b/centaur/src/main/scala/centaur/api/DaemonizedDefaultThreadFactory.scala index db9eb07d79b..d75299aa590 100644 --- a/centaur/src/main/scala/centaur/api/DaemonizedDefaultThreadFactory.scala +++ b/centaur/src/main/scala/centaur/api/DaemonizedDefaultThreadFactory.scala @@ -14,8 +14,7 @@ import java.util.concurrent.atomic.AtomicInteger * > main thread). */ object DaemonizedDefaultThreadFactory extends ThreadFactory { - private val s = System.getSecurityManager - private val group = if (s != null) s.getThreadGroup else Thread.currentThread.getThreadGroup + private val group = Thread.currentThread.getThreadGroup private val threadNumber = new AtomicInteger(1) private val namePrefix = "daemonpool-thread-" diff --git a/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/CloudNioPath.scala b/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/CloudNioPath.scala index b6803670d39..530ba5526ef 100644 --- a/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/CloudNioPath.scala +++ b/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/CloudNioPath.scala @@ -176,7 +176,7 @@ class CloudNioPath(filesystem: CloudNioFileSystem, private[spi] val unixPath: Un ): WatchKey = throw new UnsupportedOperationException override def iterator(): java.util.Iterator[Path] = - if (unixPath.isEmpty || unixPath.isRoot) { + if (unixPath.izEmpty || unixPath.isRoot) { java.util.Collections.emptyIterator() } else { unixPath.split().to(LazyList).map(part => newPath(UnixPath.getPath(part)).asInstanceOf[Path]).iterator.asJava diff --git a/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/UnixPath.scala b/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/UnixPath.scala index b7d9ed02035..7d929d148ab 100644 --- a/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/UnixPath.scala +++ b/cloud-nio/cloud-nio-spi/src/main/scala/cloud/nio/spi/UnixPath.scala @@ -67,7 +67,7 @@ final private[spi] case class UnixPath(path: String) extends CharSequence { def isAbsolute: Boolean = UnixPath.isAbsolute(path) - def isEmpty: Boolean = path.isEmpty + def izEmpty: Boolean = path.isEmpty def hasTrailingSeparator: Boolean = UnixPath.hasTrailingSeparator(path) diff --git a/docs/Configuring.md b/docs/Configuring.md index aa810d19a0c..288ec9723de 100644 --- a/docs/Configuring.md +++ b/docs/Configuring.md @@ -689,7 +689,7 @@ This limit may be configured via the configuration value: ```hocon yaml { - max-depth = 1000 + max-depth = 100 } ``` diff --git a/docs/Releases.md b/docs/Releases.md index 9699d7d44bc..a6a709518b9 100644 --- a/docs/Releases.md +++ b/docs/Releases.md @@ -19,8 +19,8 @@ Mac users with Homebrew can also get Cromwell with the command `brew install cro This documentation frequently refers to a "Cromwell jar" with a name like `cromwell-.jar`. This is the main artifact in Cromwell releases that contains all executable Cromwell code and default configuration. -A distribution of Java 11 is required to run Cromwell. Cromwell is developed, tested, and containerized using -[AdoptOpenJDK 11 HotSpot](https://adoptopenjdk.net/). +A distribution of Java 17 is required to run Cromwell. Cromwell is developed, tested, and containerized using +[AdoptOpenJDK 17 HotSpot](https://adoptopenjdk.net/). For users running a Cromwell server [a docker image](https://hub.docker.com/r/broadinstitute/cromwell) has been made available. diff --git a/docs/tutorials/FiveMinuteIntro.md b/docs/tutorials/FiveMinuteIntro.md index 1c16a56c606..f15e28087b9 100644 --- a/docs/tutorials/FiveMinuteIntro.md +++ b/docs/tutorials/FiveMinuteIntro.md @@ -3,11 +3,11 @@ ### Prerequisites: * A Unix-based operating system (yes, that includes Mac!) -* A Java 11 runtime environment +* A Java 17 runtime environment * You can see what you have by running `$ java -version` on a terminal. * If not, consider installing via conda or brew [as explained here](../Releases.md). - * We recommend [SDKMAN](https://sdkman.io/install) to install the latest 11 build of [Temurin](https://adoptium.net/temurin/releases/?version=11) - * `sdk install java 11.0.16-tem` as of the time of this writing + * We recommend [SDKMAN](https://sdkman.io/install) to install the latest 17 build of [Temurin](https://adoptium.net/temurin/releases/?version=17) + * `sdk install 17.0.9-tem` as of the time of this writing * You might need to update the `export JAVA_HOME` in your bash profile to point to your JAVA install location. * A sense of adventure! diff --git a/project/Publishing.scala b/project/Publishing.scala index 0af27e77147..c8a601a4f0c 100644 --- a/project/Publishing.scala +++ b/project/Publishing.scala @@ -63,7 +63,7 @@ object Publishing { val additionalDockerInstr: Seq[Instruction] = (dockerCustomSettings ?? Nil).value new Dockerfile { - from("us.gcr.io/broad-dsp-gcr-public/base/jre:11-debian") + from("us.gcr.io/broad-dsp-gcr-public/base/jre:17-debian") expose(8000) add(artifact, artifactTargetPath) runRaw(s"ln -s $artifactTargetPath /app/$projectName.jar") @@ -163,8 +163,7 @@ object Publishing { val additionalResolvers = List( broadArtifactoryResolver, broadArtifactoryResolverSnap, - Resolver.sonatypeRepo("releases") - ) + ) ++ Resolver.sonatypeOssRepos("releases") private val artifactoryCredentialsFile = file("target/ci/resources/artifactory_credentials.properties").getAbsoluteFile diff --git a/publish/docker-setup.sh b/publish/docker-setup.sh index 613d251df96..bc39f31d10a 100755 --- a/publish/docker-setup.sh +++ b/publish/docker-setup.sh @@ -20,7 +20,7 @@ mkdir -p /etc/apt/keyrings wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list apt update -apt install -y temurin-11-jdk +apt install -y temurin-17-jdk # Install jq 1.6 to ensure --rawfile is supported curl -L https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 -o /usr/bin/jq diff --git a/runConfigurations/renderCiResources.run.xml b/runConfigurations/renderCiResources.run.xml index 2a5ab5e29b8..ef56bf5e4fd 100644 --- a/runConfigurations/renderCiResources.run.xml +++ b/runConfigurations/renderCiResources.run.xml @@ -7,8 +7,8 @@