From bcac1022576f084e371939ae296ef8d4cfd2818a Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 12:59:06 +0200 Subject: [PATCH 1/9] Increase size of mvn repo storage --- k8s/mvn-repo-data.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/mvn-repo-data.yaml b/k8s/mvn-repo-data.yaml index c6b3e82d..89f7e5a5 100644 --- a/k8s/mvn-repo-data.yaml +++ b/k8s/mvn-repo-data.yaml @@ -7,4 +7,4 @@ spec: - ReadWriteOnce resources: requests: - storage: 10Gi + storage: 30Gi From afcb6ca7bc5784a067e85337d55d78eb216dd8ae Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 12:59:37 +0200 Subject: [PATCH 2/9] Update jenkins and carthago-operator --- k8s/jenkins-operator.yaml | 2 +- k8s/jenkins.yaml | 74 +++++++++++---------------------------- 2 files changed, 21 insertions(+), 55 deletions(-) diff --git a/k8s/jenkins-operator.yaml b/k8s/jenkins-operator.yaml index 01cb4a94..a4e62fea 100644 --- a/k8s/jenkins-operator.yaml +++ b/k8s/jenkins-operator.yaml @@ -9,7 +9,7 @@ operator: replicaCount: 1 # image is the name (and tag) of the Carthago Operator for Jenkins image - image: carthago.azurecr.io/carthago-op-jenkins:0.17.0 + image: carthago.azurecr.io/carthago-op-jenkins:0.18.1 # imagePullPolicy defines policy for pulling images imagePullPolicy: IfNotPresent diff --git a/k8s/jenkins.yaml b/k8s/jenkins.yaml index 361044ae..5eb99032 100644 --- a/k8s/jenkins.yaml +++ b/k8s/jenkins.yaml @@ -30,7 +30,7 @@ jenkins: sidecars: [] jenkinsController: name: jenkins-controller - image: jenkins/jenkins:2.332.3-lts + image: jenkins/jenkins:2.361.1-lts imagePullPolicy: IfNotPresent command: [] livenessProbe: {} @@ -126,62 +126,26 @@ jenkins: # - name: jacoco # version: "3.1.1" plugins: - - name: blueocean - version: "1.25.5" - - name: timestamper - version: "1.18" - name: ansicolor - version: "1.0.1" - - name: parameter-separator - version: "1.3" + version: "1.0.2" + - name: blueocean + version: "1.25.8" - name: copyartifact version: "1.46.4" - name: github-oauth version: "0.39" - name: matrix-auth version: "3.1.3" + - name: git + version: "4.11.5" - name: git-client - version: "3.11.0" + version: "3.11.2" - name: github - version: "1.34.3" - - name: git - version: "4.11.3" - - name: kubernetes - version: "3651.v908e7db_10d06" - - name: kubernetes-client-api - version: "5.12.2-193.v26a_6078f65a_9" - - name: workflow-api - version: "1164.v760c223ddb_32" - - name: workflow-aggregator - version: "581.v0c46fa_697ffd" - - name: workflow-cps - version: "2725.v7b_c717eb_12ce" - - name: workflow-job - version: "1189.va_d37a_e9e4eda_" - - name: workflow-durable-task-step - version: "1155.v79567b_e0a_2de" - - name: workflow-basic-steps - version: "948.v2c72a_091b_b_68" - - name: workflow-support - version: "820.vd1a_6cc65ef33" - - name: pipeline-model-definition - version: "2.2097.v33db_b_de764b_e" - - name: pipeline-model-api - version: "2.2097.v33db_b_de764b_e" - - name: pipeline-stage-tags-metadata - version: "2.2097.v33db_b_de764b_e" - - name: pipeline-model-extensions - version: "2.2097.v33db_b_de764b_e" - - name: job-dsl - version: "1.79" - - name: junit - version: "1119.1121.vc43d0fc45561" - - name: script-security - version: "1175.v4b_d517d6db_f0" - - name: display-url-api - version: "2.3.6" - - name: parameterized-scheduler - version: "1.1" + version: "1.35.0" + - name: parameter-separator + version: "1.3" + - name: timestamper + version: "1.20" # roles define a list of extra RBAC roles for the Jenkins Master pod service account roles: [] @@ -250,7 +214,9 @@ jenkinsGroovyScripts: # data is inline Groovy script data: | + System.out.println("Starting Groovy scripts execution") // Set Kubernetes cloud config, cannot use casc, since it would override operator config + import jenkins.model.Jenkins def instance = Jenkins.getInstanceOrNull() def k8s = instance?.getCloud("kubernetes") k8s?.setMaxRequestsPerHost(128) // default 32 @@ -261,9 +227,8 @@ jenkinsGroovyScripts: // The directory has to be copied because of lack of write permissions in it def oldLibPath="/var/jenkins_home/common-lib" def newLibPath="/var/jenkins_home/scripts-repo" - def logFile=new java.io.File("/var/lib/jenkins/gitInit.log") - new ProcessBuilder(['bash', '-c', """ + def initResult = new ProcessBuilder(['bash', '-c', """ rm -rf $newLibPath && \ cp -rL $oldLibPath $newLibPath && \ cd $newLibPath && \ @@ -273,10 +238,11 @@ jenkinsGroovyScripts: git add --all && \ git commit -m "init" """] as String[]) - .redirectErrorStream(true) - .inheritIO() - .start() - .waitFor() + .redirectErrorStream(true) + .inheritIO() + .start() + .waitFor() + System.out.println("Git repo init exit code: $initResult") # secretRef is secret reference which allows to inject the secrets into Groovy script code #secretRef: From 5784f4e70a736fe80ed5dcffb547d580b8513d0c Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 13:00:08 +0200 Subject: [PATCH 3/9] Set buildNames for weekly jobs --- jenkins/seeds/runBuildWeekly.groovy | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jenkins/seeds/runBuildWeekly.groovy b/jenkins/seeds/runBuildWeekly.groovy index 5abe9bfd..ba13de6f 100644 --- a/jenkins/seeds/runBuildWeekly.groovy +++ b/jenkins/seeds/runBuildWeekly.groovy @@ -2,6 +2,7 @@ def runBuildJobName = "/runBuild" def compilerVersion +def buildName pipeline { agent { label "default" } @@ -11,6 +12,7 @@ pipeline { script { compilerVersion = latestNightlyVersion() currentBuild.setDescription(compilerVersion) + buildName = "${compilerVersion}_weekly-${currentBuild.number}" } } } @@ -20,8 +22,9 @@ pipeline { runBuildJobRef = build( job: runBuildJobName, parameters: [ + string(name: "buildName", value: buildName) string(name: "publishedScalaVersion", value: compilerVersion), - string(name: "minStarsCount", value: "0"), + string(name: "minStarsCount", value: "-1"), string(name: "maxProjectsCount", value: "-1") // unlimited ] ) From 501b54d413d5542b5b25ca07995e14adca93d131 Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 13:00:31 +0200 Subject: [PATCH 4/9] Fix settting cron jobs for weekly builds --- jenkins/seeds/initializeSeedJobs.groovy | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/jenkins/seeds/initializeSeedJobs.groovy b/jenkins/seeds/initializeSeedJobs.groovy index 2056fb87..a6f48e8b 100644 --- a/jenkins/seeds/initializeSeedJobs.groovy +++ b/jenkins/seeds/initializeSeedJobs.groovy @@ -108,13 +108,16 @@ pipelineJob('/runBuildWeekly') { } } } - } - triggers { - cron(''' - // # Run full build every Friday at 8 PM - TZ=Europe/Warsaw - H 20 * * 5 - ''') + pipelineTriggers{ + triggers { + cron{ + spec(''' + # Run full build every Friday at 8 PM UTC + H 20 * * 5 + ''') + } + } + } } } From 69bd5a87a83b04c9e536bb0b7fd3a9db44b2bc3d Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 13:00:49 +0200 Subject: [PATCH 5/9] Set more timeouts for buildCommunityProject --- jenkins/seeds/buildCommunityProject.groovy | 101 +++++++++++---------- 1 file changed, 53 insertions(+), 48 deletions(-) diff --git a/jenkins/seeds/buildCommunityProject.groovy b/jenkins/seeds/buildCommunityProject.groovy index 1493eb62..259206ad 100644 --- a/jenkins/seeds/buildCommunityProject.groovy +++ b/jenkins/seeds/buildCommunityProject.groovy @@ -26,6 +26,9 @@ def retryOnBuildFailureMsg = "Enforcing retry of the build after failure." pipeline { agent none + options { + timeout(time: 8, unit: 'HOURS') // timeout on whole pipeline job including queueing in k8s within the stage and execution + } stages { stage("Initialize build") { agent none @@ -87,61 +90,63 @@ pipeline { priorityClassName: "jenkins-agent-priority" """.stripIndent() ){ - conditionalRetry([ - agentLabel: POD_LABEL, - customFailurePatterns: [ - "manual-retry-trigger": ".*${retryOnBuildFailureMsg}.*" - ], - runSteps: { - container('project-builder') { - timeout(time: 90, unit: "MINUTES"){ - script { - retryOnConnectionError { - sh """ - echo "building and publishing ${params.projectName}" - echo 'failure' > build-status.txt # Assume failure unless overwritten by a successful build - touch build-logs.txt build-summary.txt - """ - // Pre-stash in case of pipeline failure - stash(name: "buildResults", includes: "build-*.txt") - ansiColor('xterm') { - def status = sh( - returnStatus: true, - script: """ - (/build/build-revision.sh \ - '${params.repoUrl}' \ - '${params.revision}' \ - '${params.scalaVersion}' \ - '${params.version}' \ - '${params.targets}' \ - '${params.mvnRepoUrl}' \ - '${params.enforcedSbtVersion}' \ - '${params.projectConfig}' 2>&1 | tee build-logs.txt) \ - && [ "\$(cat build-status.txt)" = success ] - """ - ) - if(status != 0){ - def extraMsg = "" - if(retryOnBuildFailureCount-- > 0) { - // Allow the run manager to catch known pattern to allow for retry - echo retryOnBuildFailureMsg - extraMsg = ", retrying to check stability" + timeout(time: 3, unit: "HOURS"){ + conditionalRetry([ + agentLabel: POD_LABEL, + customFailurePatterns: [ + "manual-retry-trigger": ".*${retryOnBuildFailureMsg}.*" + ], + runSteps: { + container('project-builder') { + timeout(time: 90, unit: "MINUTES"){ + script { + retryOnConnectionError { + sh """ + echo "building and publishing ${params.projectName}" + echo 'failure' > build-status.txt # Assume failure unless overwritten by a successful build + touch build-logs.txt build-summary.txt + """ + // Pre-stash in case of pipeline failure + stash(name: "buildResults", includes: "build-*.txt") + ansiColor('xterm') { + def status = sh( + returnStatus: true, + script: """ + (/build/build-revision.sh \ + '${params.repoUrl}' \ + '${params.revision}' \ + '${params.scalaVersion}' \ + '${params.version}' \ + '${params.targets}' \ + '${params.mvnRepoUrl}' \ + '${params.enforcedSbtVersion}' \ + '${params.projectConfig}' 2>&1 | tee build-logs.txt) \ + && [ "\$(cat build-status.txt)" = success ] + """ + ) + if(status != 0){ + def extraMsg = "" + if(retryOnBuildFailureCount-- > 0) { + // Allow the run manager to catch known pattern to allow for retry + echo retryOnBuildFailureMsg + extraMsg = ", retrying to check stability" + } + throw new Exception("Project build failed with exit code ${status}${extraMsg}") } - throw new Exception("Project build failed with exit code ${status}${extraMsg}") } } } } } + }, + postAlways: { + retryOnConnectionError { + archiveArtifacts(artifacts: "build-*.txt") + stash(name: "buildResults", includes: "build-*.txt") + } } - }, - postAlways: { - retryOnConnectionError { - archiveArtifacts(artifacts: "build-*.txt") - stash(name: "buildResults", includes: "build-*.txt") - } - } - ]) + ]) + } } } post { From 79a4212bc571999e51577a68d5c859cc03ccfd5e Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 13:06:55 +0200 Subject: [PATCH 6/9] Remove timeout starting before entering the container --- jenkins/seeds/buildCommunityProject.groovy | 98 +++++++++++----------- 1 file changed, 48 insertions(+), 50 deletions(-) diff --git a/jenkins/seeds/buildCommunityProject.groovy b/jenkins/seeds/buildCommunityProject.groovy index 259206ad..555ee5f4 100644 --- a/jenkins/seeds/buildCommunityProject.groovy +++ b/jenkins/seeds/buildCommunityProject.groovy @@ -90,63 +90,61 @@ pipeline { priorityClassName: "jenkins-agent-priority" """.stripIndent() ){ - timeout(time: 3, unit: "HOURS"){ - conditionalRetry([ - agentLabel: POD_LABEL, - customFailurePatterns: [ - "manual-retry-trigger": ".*${retryOnBuildFailureMsg}.*" - ], - runSteps: { - container('project-builder') { - timeout(time: 90, unit: "MINUTES"){ - script { - retryOnConnectionError { - sh """ - echo "building and publishing ${params.projectName}" - echo 'failure' > build-status.txt # Assume failure unless overwritten by a successful build - touch build-logs.txt build-summary.txt - """ - // Pre-stash in case of pipeline failure - stash(name: "buildResults", includes: "build-*.txt") - ansiColor('xterm') { - def status = sh( - returnStatus: true, - script: """ - (/build/build-revision.sh \ - '${params.repoUrl}' \ - '${params.revision}' \ - '${params.scalaVersion}' \ - '${params.version}' \ - '${params.targets}' \ - '${params.mvnRepoUrl}' \ - '${params.enforcedSbtVersion}' \ - '${params.projectConfig}' 2>&1 | tee build-logs.txt) \ - && [ "\$(cat build-status.txt)" = success ] - """ - ) - if(status != 0){ - def extraMsg = "" - if(retryOnBuildFailureCount-- > 0) { - // Allow the run manager to catch known pattern to allow for retry - echo retryOnBuildFailureMsg - extraMsg = ", retrying to check stability" - } - throw new Exception("Project build failed with exit code ${status}${extraMsg}") + conditionalRetry([ + agentLabel: POD_LABEL, + customFailurePatterns: [ + "manual-retry-trigger": ".*${retryOnBuildFailureMsg}.*" + ], + runSteps: { + container('project-builder') { + timeout(time: 90, unit: "MINUTES"){ + script { + retryOnConnectionError { + sh """ + echo "building and publishing ${params.projectName}" + echo 'failure' > build-status.txt # Assume failure unless overwritten by a successful build + touch build-logs.txt build-summary.txt + """ + // Pre-stash in case of pipeline failure + stash(name: "buildResults", includes: "build-*.txt") + ansiColor('xterm') { + def status = sh( + returnStatus: true, + script: """ + (/build/build-revision.sh \ + '${params.repoUrl}' \ + '${params.revision}' \ + '${params.scalaVersion}' \ + '${params.version}' \ + '${params.targets}' \ + '${params.mvnRepoUrl}' \ + '${params.enforcedSbtVersion}' \ + '${params.projectConfig}' 2>&1 | tee build-logs.txt) \ + && [ "\$(cat build-status.txt)" = success ] + """ + ) + if(status != 0){ + def extraMsg = "" + if(retryOnBuildFailureCount-- > 0) { + // Allow the run manager to catch known pattern to allow for retry + echo retryOnBuildFailureMsg + extraMsg = ", retrying to check stability" } + throw new Exception("Project build failed with exit code ${status}${extraMsg}") } } } } } - }, - postAlways: { - retryOnConnectionError { - archiveArtifacts(artifacts: "build-*.txt") - stash(name: "buildResults", includes: "build-*.txt") - } } - ]) - } + }, + postAlways: { + retryOnConnectionError { + archiveArtifacts(artifacts: "build-*.txt") + stash(name: "buildResults", includes: "build-*.txt") + } + } + ]) } } post { From d1ed3e377eba4488be371e7e86a103313e3c2612 Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 16:47:31 +0200 Subject: [PATCH 7/9] Update config --- env/prod/config/filtered-projects.txt | 6 ++---- env/prod/config/replaced-projects.txt | 15 +++++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/env/prod/config/filtered-projects.txt b/env/prod/config/filtered-projects.txt index ebb6fb9d..2b02f76b 100644 --- a/env/prod/config/filtered-projects.txt +++ b/env/prod/config/filtered-projects.txt @@ -13,7 +13,7 @@ percontmx:cfdi:.* simy4:xpath-to-xml:.* stryker-mutator:mutation-testing-elements:.* tlsomers:scala-suspendable:.* -virtuoso:opensource:.* +openlink:virtuoso-opensource:.* # Moved to cats repo since 2.3 typelevel:algebra.*:2.2.* @@ -38,6 +38,7 @@ sbt:.*:2.0.0-alpha.* dataoperandz:cassper:.* jvican:dijon:.* mdedetrich:scalajson:.* +playframework:playframework:.* # The same git info between multiple projects, leading to multiple missing ids tulz-app:.*:.* @@ -61,9 +62,6 @@ sciss:scalainterpreterpane:.* sciss:span:.* sciss:swingplus:.* -## Incorrect source cross-version directory -virtuslab:scala-cli:.* - ## Does not compile arturopala:gitignore:.* fehu:opentracing-scala:.* diff --git a/env/prod/config/replaced-projects.txt b/env/prod/config/replaced-projects.txt index b01bf689..467ce1ed 100644 --- a/env/prod/config/replaced-projects.txt +++ b/env/prod/config/replaced-projects.txt @@ -1,11 +1,7 @@ -#milessabin/shapeless typelevel/shapeless-3 -#playframework/play-json dotty-staging/play-json -#playframework/playframework dotty-staging/play-json -#scodec/scodec dotty-staging/scodec main -#scala/scala-swing scala/scala-swing v3.0.0#3.0.0 -#scala/nanotest-strawman scala/nanotest-strawman main -#spray/spray spray/spray-json v1.3.6-3.1.0 -#typelevel/simulacrum-scalafix typelevel/simulacrum-scalafix master +scala/scala-swing scala/scala-swing v3.0.0#3.0.0 +scala/nanotest-strawman scala/nanotest-strawman main +spray/spray spray/spray-json v1.3.6-3.1.0 +typelevel/simulacrum-scalafix typelevel/simulacrum-scalafix master # https://github.com/lampepfl/dotty/issues/14804 tpolecat/doobie WojciechMazur/doobie fix/3.1.1-compat @@ -28,3 +24,6 @@ sbt/sbinary sbt/sbinary master #1.2.9 outr/perfolation outr/perfolation master + +#1.0.0 +eed3si9n/verify eed3si9n/verify main From 56e310bc724cf89661aaeb513fdee0471227ecfe Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 17:03:17 +0200 Subject: [PATCH 8/9] Handle Scala 3.2.0 warnings in cli --- cli/scb-cli.scala | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/cli/scb-cli.scala b/cli/scb-cli.scala index a1f25e13..fee304e9 100644 --- a/cli/scb-cli.scala +++ b/cli/scb-cli.scala @@ -236,8 +236,8 @@ case class ProjectInfo(id: String, params: BuildParameters, summary: BuildSummar val excluded = for - JArray(excluded) <- params.config.map(parse(_) \ "projects" \ "exclude").toSeq - JString(entry) <- excluded + case JArray(excluded) <- params.config.map(parse(_) \ "projects" \ "exclude").toSeq + case JString(entry) <- excluded yield entry baseTargets.diff(excluded) } @@ -270,8 +270,8 @@ object BuildInfo: ) val json = parse(r.data.toString) for { - JArray(ids) <- (json \ "actions" \ "causes" \ "upstreamBuild").toOption - JInt(id) <- ids.headOption + case JArray(ids) <- (json \ "actions" \ "causes" \ "upstreamBuild").toOption + case JInt(id) <- ids.headOption } yield id.toString }.orElse { println("No upstream project defined") @@ -322,9 +322,9 @@ object BuildInfo: val buildPlanJson = os.read(coordinatorDir / "data" / "buildPlan.json") parse(buildPlanJson) - val JArray(buildPlan) = prepareBuildPlan() + val JArray(buildPlan) = prepareBuildPlan(): @unchecked val projects = for - JArray(buildStage) <- buildPlan.take(1) // There should be only 1 stage + case JArray(buildStage) <- buildPlan.take(1) // There should be only 1 stage project <- buildStage.take(1) // There should be only 1 project // Config is an object, though be default would be decoded to None when we expect Option[String] // We don't care about its content so we treat it as opaque string value @@ -379,14 +379,14 @@ object BuildSummary: else try { for - JArray(projects) <- parse( + case JArray(projects) <- parse( // Might contain quoted strings r.data.toString.replaceAll(""""reasons": \[.*\]""", """"reasons": []""") ) project <- projects - JString(artifactName) <- project \ "module" - BuildResult(compile) <- project \ "compile" \ "status" - BuildResult(testCompile) <- project \ "test-compile" \ "status" + case JString(artifactName) <- project \ "module" + case BuildResult(compile) <- project \ "compile" \ "status" + case BuildResult(testCompile) <- project \ "test-compile" \ "status" yield BuildProjectSummary( artifactName = artifactName, results = ProjectTargetResults( @@ -457,10 +457,10 @@ object BuildParameters: requests.get(s"$jobApi/json?tree=actions[parameters[*]]") val json = parse(r.data.toString) val params = for { - JArray(params) <- json \ "actions" \ "parameters" - JObject(param) <- params - JField("name", JString(name)) <- param - JField("value", JString(value)) <- param + case JArray(params) <- json \ "actions" \ "parameters" + case JObject(param) <- params + case JField("name", JString(name)) <- param + case JField("value", JString(value)) <- param } yield name -> value fromJenkinsParams(params.toMap) From 17a8c11c40172649fced7a268bb3609f3fcaa1d0 Mon Sep 17 00:00:00 2001 From: Wojciech Mazur Date: Mon, 26 Sep 2022 22:17:38 +0200 Subject: [PATCH 9/9] Config updates --- env/prod/config/filtered-projects.txt | 15 ++++++++------- env/prod/config/projects-config.conf | 3 +++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/env/prod/config/filtered-projects.txt b/env/prod/config/filtered-projects.txt index 2b02f76b..9a946885 100644 --- a/env/prod/config/filtered-projects.txt +++ b/env/prod/config/filtered-projects.txt @@ -62,6 +62,14 @@ sciss:scalainterpreterpane:.* sciss:span:.* sciss:swingplus:.* +## Uses mill-tpolecat - it does fails to parse RC versions +joan38:kubernetes-client:.* +carlosedp:riscvassembler:.* + +## Publishing artifact leads to failurs in downstream projects +### Publishes only pom, no artifacts +msgpack4z:msgpack4z-native:.* + ## Does not compile arturopala:gitignore:.* fehu:opentracing-scala:.* @@ -123,13 +131,6 @@ primetalk:typed-ontology:.* vigoo:zio-aws:.* zio:zio-aws:.* -# Cannot build scaladoc in Scala 3 -scalatest:scalatestplus-easymock:.* -scalatest:scalatestplus-jmock:.* -scalatest:scalatestplus-junit:.* -scalatest:scalatestplus-mockito:.* -scalatest:scalatestplus-scalacheck:.* -scalatest:scalatestplus-selenium:.* # Depends on not published lib with CrossVersion.full ## wartremover diff --git a/env/prod/config/projects-config.conf b/env/prod/config/projects-config.conf index d59bb204..e3f63118 100644 --- a/env/prod/config/projects-config.conf +++ b/env/prod/config/projects-config.conf @@ -72,6 +72,9 @@ davenverse_fuuid{ """set doobie/Test/unmanagedSources/excludeFilter ~= {_ || "PostgresInstanceSpec.scala" || "PostgresTraversalSpec.scala"} """ ] } +danslapman_morphling{ + projects.exclude = [morphling-circe] // Needs update due to source compatible change +} davenverse_rediculous.tests = compile-only davenverse_rediculous-concurrent.tests = compile-only davenverse_whale-tail.tests = compile-only