Skip to content
Merged
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
48 changes: 28 additions & 20 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ name: Build
on:
workflow_dispatch:
push:
branches:
branches:
- '!main'
# - '*' # matches every branch that doesn't contain a '/'
# - '*/*' # matches every branch containing a single '/'
# - '**' # matches every branch
# - '!main' # excludes main
# - '!main' # excludes main
pull_request:
branches:
- '**'
Expand All @@ -23,27 +23,33 @@ permissions:

jobs:
test:
runs-on: self-hosted
# runs-on: ubuntu-latest
env:
# define Java options for both official sbt and sbt-extras
JAVA_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
JVM_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
# runs-on: self-hosted
runs-on: ubuntu-latest
steps:
- name: Env
run: |
echo "JFROG_USER=${{ secrets.JFROG_USER }}" >> $GITHUB_ENV
echo "JFROG_PASSWORD=${{ secrets.JFROG_PASSWORD }}" >> $GITHUB_ENV
echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV
echo "CODECOV_TOKEN=${{ secrets.CODECOV_TOKEN }}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '8'
java-version: '17'
distribution: 'temurin'
# cache: 'sbt'
- name: Setup sbt launcher
uses: sbt/setup-sbt@v1
- name: Cross Compile
run: SBT_OPTS="-Xss4M -Xms1g -Xmx4g -Dfile.encoding=UTF-8" sbt '+ Test/compile'
- name: Run tests & Coverage Report
run: sbt coverage test coverageReport
run: SBT_OPTS="-Xss4M -Xms1g -Xmx4g -Dfile.encoding=UTF-8" sbt coverage test coverageReport
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
files: common/target/scala-2.12/coverage-report/cobertura.xml,core/target/scala-2.12/coverage-report/cobertura.xml,teskit/target/scala-2.12/coverage-report/cobertura.xml
files: common/target/scala-*/coverage-report/cobertura.xml,core/target/scala-*/coverage-report/cobertura.xml,testkit/target/scala-*/coverage-report/cobertura.xml
flags: unittests
fail_ci_if_error: true
verbose: true
Expand All @@ -52,12 +58,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '8'
java-version: '17'
distribution: 'temurin'
# cache: 'sbt'
- name: Setup sbt launcher
uses: sbt/setup-sbt@v1
- name: Formatting
run: sbt scalafmtSbtCheck scalafmtCheck test:scalafmtCheck
run: sbt scalafmtSbtCheck scalafmtCheck Test/scalafmtCheck
74 changes: 41 additions & 33 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,55 +8,63 @@ name: Release
on:
workflow_dispatch:
push:
branches:
branches:
- 'main' # Run workflow on commits to the `main` branch
# - '*' # matches every branch that doesn't contain a '/'
# - '*/*' # matches every branch containing a single '/'
# - '**' # matches every branch
# - '!main' # excludes main
# - '!main' # excludes main

permissions:
contents: read

jobs:
release:
runs-on: self-hosted
# runs-on: ubuntu-latest
env:
# define Java options for both official sbt and sbt-extras
JAVA_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
JVM_OPTS: -Xms2048M -Xmx2048M -Xss6M -XX:ReservedCodeCacheSize=256M -Dfile.encoding=UTF-8
# runs-on: self-hosted
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
# cache: 'sbt'
- name: Run tests & Coverage Report
run: sbt coverage test coverageReport coverageAggregate
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: common/target/scala-2.12/coverage-report/cobertura.xml,core/target/scala-2.12/coverage-report/cobertura.xml,teskit/target/scala-2.12/coverage-report/cobertura.xml
flags: unittests
fail_ci_if_error: true
verbose: true
- name: Publish
run: sbt publish
- name: Env
run: |
echo "JFROG_USER=${{ secrets.JFROG_USER }}" >> $GITHUB_ENV
echo "JFROG_PASSWORD=${{ secrets.JFROG_PASSWORD }}" >> $GITHUB_ENV
echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV
echo "CODECOV_TOKEN=${{ secrets.CODECOV_TOKEN }}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# cache: 'sbt'
- name: Setup sbt launcher
uses: sbt/setup-sbt@v1
- name: Cross Compile
run: SBT_OPTS="-Xss4M -Xms1g -Xmx4g -Dfile.encoding=UTF-8" sbt '+ Test/compile'
- name: Run tests & Coverage Report
run: SBT_OPTS="-Xss4M -Xms1g -Xmx4g -Dfile.encoding=UTF-8" sbt coverage test coverageReport coverageAggregate
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: common/target/scala-*/coverage-report/cobertura.xml,core/target/scala-*/coverage-report/cobertura.xml,testkit/target/scala-*/coverage-report/cobertura.xml
flags: unittests
fail_ci_if_error: false
verbose: true
- name: Publish
run: SBT_OPTS="-Xss4M -Xms1g -Xmx4g" sbt '+ publish'

lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '8'
java-version: '17'
distribution: 'temurin'
# cache: 'sbt'
# cache: 'sbt'
- name: Setup sbt launcher
uses: sbt/setup-sbt@v1
- name: Formatting
run: sbt scalafmtSbtCheck scalafmtCheck test:scalafmtCheck
run: sbt scalafmtSbtCheck scalafmtCheck Test/scalafmtCheck
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@
sbt.json
target
.metals
*.log
*.log
actions-runner
api/src/main/resources/logback.xml
74 changes: 63 additions & 11 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
lazy val scala212 = "2.12.20"
lazy val scala213 = "2.13.16"
lazy val javacCompilerVersion = "17"
lazy val scalacCompilerOptions = Seq("-deprecation", "-feature")

lazy val moduleSettings = Seq(
crossScalaVersions := Seq(scala212, scala213),
scalacOptions ++= {
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((2, 12)) => scalacCompilerOptions
case Some((2, 13)) => scalacCompilerOptions :+ s"-release:$javacCompilerVersion"
case _ => Seq.empty
}
}
)

ThisBuild / organization := "app.softnetwork"

name := "notification"

ThisBuild / version := "0.8.2"

ThisBuild / scalaVersion := "2.12.18"
ThisBuild / version := "0.9.0"

ThisBuild / scalacOptions ++= Seq("-deprecation", "-feature", "-target:jvm-1.8")
ThisBuild / scalaVersion := scala212

ThisBuild / javacOptions ++= Seq("-source", "1.8", "-target", "1.8", "-Xlint")
ThisBuild / javacOptions ++= Seq("-source", javacCompilerVersion, "-target", javacCompilerVersion)

ThisBuild / resolvers ++= Seq(
"Softnetwork Server" at "https://softnetwork.jfrog.io/artifactory/releases/",
Expand All @@ -25,37 +39,72 @@ val scalatest = Seq(

ThisBuild / libraryDependencies ++= Seq(
"com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf",
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.1",
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2",
"org.scala-lang.modules" %% "scala-collection-compat" % "2.11.0",
"org.apache.commons" % "commons-lang3" % "3.15.0",
"org.slf4j" % "slf4j-api" % Versions.slf4j,
"ch.qos.logback" % "logback-classic" % Versions.logback,
) ++ scalatest

ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always

ThisBuild / javaOptions ++= Seq(
"--add-opens=java.base/java.util=ALL-UNNAMED",
"--add-opens=java.base/java.util.concurrent=ALL-UNNAMED",
"--add-opens=java.base/java.lang=ALL-UNNAMED",
"--add-opens=java.base/java.lang.invoke=ALL-UNNAMED",
"--add-opens=java.base/java.math=ALL-UNNAMED",
"--add-opens=java.base/java.io=ALL-UNNAMED",
"--add-opens=java.base/java.net=ALL-UNNAMED",
"--add-opens=java.base/java.nio=ALL-UNNAMED",
"--add-opens=java.base/java.text=ALL-UNNAMED",
"--add-opens=java.base/java.time=ALL-UNNAMED",
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"
)

ThisBuild / Test / fork := true

ThisBuild / Test / javaOptions ++= (ThisBuild / javaOptions).value

Test / parallelExecution := false

lazy val common = project.in(file("common"))
.configs(IntegrationTest)
.settings(Defaults.itSettings)
.settings(
Defaults.itSettings,
moduleSettings
)
.enablePlugins(AkkaGrpcPlugin)

lazy val core = project.in(file("core"))
.configs(IntegrationTest)
.settings(Defaults.itSettings, app.softnetwork.Info.infoSettings)
.settings(
Defaults.itSettings,
app.softnetwork.Info.infoSettings,
moduleSettings
)
.enablePlugins(BuildInfoPlugin)
.dependsOn(
common % "compile->compile;test->test;it->it"
)

lazy val testkit = project.in(file("testkit"))
.configs(IntegrationTest)
.settings(Defaults.itSettings)
.settings(
Defaults.itSettings,
moduleSettings
)
.enablePlugins(BuildInfoPlugin)
.dependsOn(
core % "compile->compile;test->test;it->it"
)

lazy val api = project.in(file("api"))
.configs(IntegrationTest)
.settings(Defaults.itSettings)
.settings(
Defaults.itSettings,
moduleSettings
)
.enablePlugins(DockerPlugin, JavaAppPackaging)
.dependsOn(
core % "compile->compile;test->test;it->it"
Expand All @@ -64,4 +113,7 @@ lazy val api = project.in(file("api"))
lazy val root = project.in(file("."))
.aggregate(common, core, testkit, api)
.configs(IntegrationTest)
.settings(Defaults.itSettings)
.settings(
Defaults.itSettings,
crossScalaVersions := Nil
)
2 changes: 1 addition & 1 deletion common/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ libraryDependencies ++= Seq(
"app.softnetwork.scheduler" %% "scheduler-common" % Versions.scheduler,
"app.softnetwork.scheduler" %% "scheduler-common" % Versions.scheduler % "protobuf",
"app.softnetwork.api" %% "generic-server-api" % Versions.genericPersistence,
"app.softnetwork.protobuf" %% "scalapb-extensions" % "0.1.7",
"app.softnetwork.protobuf" %% "scalapb-extensions" % "0.2.0",
"org.apache.commons" % "commons-email" % "1.5",
"com.google.auth" % "google-auth-library-oauth2-http" % "0.20.0" excludeAll guavaExclusion,
"io.opencensus" % "opencensus-contrib-http-util" % "0.24.0" excludeAll(guavaExclusion, ExclusionRule(organization = "io.grpc", name="grpc-context")),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package app.softnetwork.notification.config

import configs.Configs
import configs.ConfigReader

import scala.language.{implicitConversions, reflectiveCalls}

trait NotificationSettings { _: InternalConfig =>
lazy val NotificationConfig: NotificationConfig =
Configs[NotificationConfig].get(config, "notification").toEither match {
ConfigReader[NotificationConfig].read(config, "notification").toEither match {
case Left(configError) =>
Console.err.println(s"Something went wrong with the provided arguments $configError")
throw configError.configException
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ package object spi {
)
}
}
Future.sequence(results).flatMap(results => Future.successful(results)) complete () match {
Future.sequence(results).flatMap(results => Future.successful(results)).complete() match {
case Success(s) =>
val existingResults =
ws.results.filterNot(result => s.exists(_.recipient == result.recipient))
Expand Down
7 changes: 7 additions & 0 deletions core/src/main/resources/reference.conf
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,20 @@ notification {
port = ${?MAIL_PORT}
sslPort = 465
sslPort = ${?MAIL_SSL_PORT}
ssl-port = ${notification.mail.sslPort}
sslEnabled = true
sslEnabled = ${?MAIL_SSL_ENABLED}
ssl-enabled = ${notification.mail.sslEnabled}
sslCheckServerIdentity = false
sslCheckServerIdentity = ${?MAIL_CHECK_SERVER_IDENTITY}
ssl-check-server-identity = ${notification.mail.sslCheckServerIdentity}
startTLSEnabled = false
startTLSEnabled = ${?MAIL_START_TLS_ENABLED}
start-tls-enabled = ${notification.mail.startTLSEnabled}
socketConnectionTimeout = 2000
socket-connection-timeout = ${notification.mail.socketConnectionTimeout}
socketTimeout = 2000
socket-timeout = ${notification.mail.socketTimeout}

from = ${credentials.mail.username}
from = ${?NOTIFICATION_MAIL_FROM}
Expand Down Expand Up @@ -42,6 +48,7 @@ notification {
fcm {
databaseUrl = ""
databaseUrl = ${?NOTIFICATION_PUSH_FCM_DATABASE_URL}
database-url = ${notification.push.fcm.databaseUrl}
google-credentials = ""
google-credentials = ${?GOOGLE_APPLICATION_CREDENTIALS}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package app.softnetwork.notification.config

import configs.Configs
import configs.ConfigReader

import scala.language.reflectiveCalls

trait MailSettings extends NotificationSettings { _: InternalConfig =>

lazy val MailConfig: MailConfig =
Configs[MailConfig].get(config, "notification.mail").toEither match {
ConfigReader[MailConfig].read(config, "notification.mail").toEither match {
case Left(configError) =>
Console.err.println(s"Something went wrong with the provided arguments $configError")
throw configError.configException
Expand Down
Loading
Loading