From 0f71299ebdf165076a9405b88d6d65c866c63b84 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 05:46:11 +0100 Subject: [PATCH 01/26] Drone CI setup, UTs, delivery and deployment now OP on development server --- drone/deliver.sh | 45 ++++++++++++++++++++++++++++++++++++++------- drone/deploy.sh | 29 +++++++++++++++++++++-------- drone/start.sh | 3 +++ 3 files changed, 62 insertions(+), 15 deletions(-) create mode 100644 drone/start.sh diff --git a/drone/deliver.sh b/drone/deliver.sh index 77c9b82..44accf1 100644 --- a/drone/deliver.sh +++ b/drone/deliver.sh @@ -1,12 +1,43 @@ #!/usr/bin/env bash -apt update && apt install openjdk-11-jdk sftp -y +echo "installing packages..." +yum update > /dev/null +yum -y install openssh-clients openssh-client > /dev/null +echo "done." -PATH="$PATH:." +rm -rf /root/.ssh +mkdir -p /root/.ssh +echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa +echo "$SSH_PUBLIC_KEY" > /root/.ssh/id_rsa.pub +chmod 0600 /root/.ssh/* +chmod 700 /root/.ssh +ls -lsh /root/.ssh +ls -ld /root/.ssh +pwd -gradlew :shadowJar +case "$1" in + "dev") + USER=maxime + IP=92.132.18.192 + DIR=server/TBasket/backend + ;; + "production") + USER=palafour + IP=193.49.118.205 + DIR=TBasket/backend + ;; + "") + echo "first argument is missing" >&2 + exit 1 + ;; + *) + echo "branch $1 is unable to perform delivery, authorized branches are 'dev and production' for delivery." >&2 + echo "delivery step skipped" + exit 0 +esac -mkdir -p ~/.ssh -echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa -echo "$SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub -sftp "$USER@$IP:tbasket/" <<< $'put build/libs/server-all.jar drone/deploy.sh' \ No newline at end of file +./gradlew :shadowJar + +echo "making delivery onto '$USER@$IP:$DIR'" +scp -o "StrictHostKeyChecking no" "build/libs/server-all.jar" "drone/deploy.sh" "drone/start.sh" "$USER@$IP:$DIR/" +echo "chmod 700 $DIR/*; $DIR/deploy.sh" | ssh -o "StrictHostKeyChecking no" $USER@$IP diff --git a/drone/deploy.sh b/drone/deploy.sh index f1e2b5f..52c3b27 100644 --- a/drone/deploy.sh +++ b/drone/deploy.sh @@ -1,19 +1,32 @@ +#!/usr/bin/env bash +DIR=$(readlink -e "$(dirname "$0")") +PROD_SERVER_JAR_NAME="server-prod.jar" +NEW_SERVER_JAR_NAME="server-all.jar" -SERVER_JAR_NAME="server-all.jar" - -OLD_PID=$(ps -aux | grep "-jar $SERVER_JAR_NAME" | tr -s " " | cut -d " " -f2) - +OLD_PID=$(ps -aux | tr -s " " | grep -E "\bjava -jar $PROD_SERVER_JAR_NAME\b" | cut -d " " -f2) #if $OLD_PID is not empty but isn't a number, something went wrong -if [ "$OLD_PID" ] && ! grep -E -q "^[0-9]+$"; then +if [ "$OLD_PID" ] && ! echo "$OLD_PID" | grep -E -q "^[0-9]+$"; then echo "error, unable to retrieve old server pid: $OLD_PID" >&2 exit 2 fi - if [ "$OLD_PID" ]; then #will cause the old server to gracefully shutdown echo "shutting down old server version ..." - kill SIGQUIT "$OLD_PID" - wait "$OLD_PID" + kill -s SIGQUIT "$OLD_PID" + while ! kill -s 0 "$OLD_PID"; do sleep 1; done #sleep until process ends +fi + +rm "$DIR/$PROD_SERVER_JAR_NAME" +mv "$DIR/$NEW_SERVER_JAR_NAME" "$DIR/$PROD_SERVER_JAR_NAME" + +SCREEN="basket" + +# create screen if not exists +if ! screen -ls | grep -q -E "\b[0-9]+\.$SCREEN\b"; then + screen -S "$SCREEN" -d -m fi + +screen -d -r "$SCREEN" -X stuff $"$DIR/start.sh\n" +echo "server is started into $SCREEN screen." diff --git a/drone/start.sh b/drone/start.sh new file mode 100644 index 0000000..3373e87 --- /dev/null +++ b/drone/start.sh @@ -0,0 +1,3 @@ + +echo "starting server" +java -jar "server-prod.jar" From 17a6e7aa48c6561bddc0f105ec2cb835dfa6d8df Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 05:48:52 +0100 Subject: [PATCH 02/26] endpoint modifications --- .drone.yml | 31 ------------------ .../main/scala/org/tbasket/api/Endpoint.scala | 4 +-- build.gradle | 2 +- drone/.drone.yml | 29 +++++++++++++++++ src/main/resources/server.properties | 2 +- .../scala/org/tbasket/EndpointSetup.scala | 18 +++++------ src/main/scala/org/tbasket/Main.scala | 32 ++++++++++++++++--- 7 files changed, 68 insertions(+), 50 deletions(-) delete mode 100644 .drone.yml create mode 100644 drone/.drone.yml diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index 80d7887..0000000 --- a/.drone.yml +++ /dev/null @@ -1,31 +0,0 @@ -kind: pipeline -type: docker -name: Deployment - -trigger: - branch: - - production - - dev - -steps: - - name: 'Unit Tests' - image: ubuntu:latest - commands: - - apt update && apt install openjdk-11-jdk -y - - ./gradlew :test - - - name: deploy to server - image: ubuntu:latest - depends_on: - - 'Unit Tests' - environment: - SSH_PRIVATE_KEY: - from_secret: ??? - SSH_PUBLIC_KEY: - from_secret: ??? - USER: - from_secret: ??? - IP: - from_secret: ??? - commands: - - drone/deliver.sh $DRONE_BRANCH diff --git a/API/src/main/scala/org/tbasket/api/Endpoint.scala b/API/src/main/scala/org/tbasket/api/Endpoint.scala index be27204..ef99857 100644 --- a/API/src/main/scala/org/tbasket/api/Endpoint.scala +++ b/API/src/main/scala/org/tbasket/api/Endpoint.scala @@ -11,7 +11,7 @@ import zio.http.model.Status import scala.collection.mutable -class Endpoint(hostname: String, port: Int) extends ZIOAppDefault { +class Endpoint(port: Int) extends ZIOAppDefault { private val handlers = mutable.HashMap.empty[String, APIRequestHandler] @@ -46,7 +46,7 @@ class Endpoint(hostname: String, port: Int) extends ZIOAppDefault { val configLayer = ServerConfig.live(config) Server.install(app).flatMap { port => - LOG.info(s"Listening API entries on $hostname:$port") + LOG.info(s"Listening API entries on $port") ZIO.never }.provide(configLayer, Server.live) } diff --git a/build.gradle b/build.gradle index d9bbb9b..0e2c3bb 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { id 'scala' id 'application' //for 'run' task id 'com.adarshr.test-logger' version '3.2.0' //fancy prints during tests - id 'com.github.johnrengelman.shadow' version '7.1.2' //for optimised jar + id 'com.github.johnrengelman.shadow' version '7.1.2' //for building optimised jar } final var scalaVersion = "2.13" diff --git a/drone/.drone.yml b/drone/.drone.yml new file mode 100644 index 0000000..768a49f --- /dev/null +++ b/drone/.drone.yml @@ -0,0 +1,29 @@ +kind: pipeline +type: docker +name: Deployment + +trigger: + branch: + - production + - dev + - drone-setup + +steps: + - name: Unit tests + image: amazoncorretto:11 + commands: + - echo + - ./gradlew :test + + - name: Deploy + image: amazoncorretto:11 + depends_on: + - 'Unit tests' + environment: + SSH_PRIVATE_KEY: + from_secret: SSH_PRIVATE + SSH_PUBLIC_KEY: + from_secret: SSH_PUBLIC + commands: + - chmod 777 drone/deliver.sh + - drone/deliver.sh $DRONE_BRANCH diff --git a/src/main/resources/server.properties b/src/main/resources/server.properties index 824af47..52a2da6 100644 --- a/src/main/resources/server.properties +++ b/src/main/resources/server.properties @@ -1 +1 @@ -endpoint.url=localhost:48485 \ No newline at end of file +endpoint.url=48485 \ No newline at end of file diff --git a/src/main/scala/org/tbasket/EndpointSetup.scala b/src/main/scala/org/tbasket/EndpointSetup.scala index 578cd5d..78ce397 100644 --- a/src/main/scala/org/tbasket/EndpointSetup.scala +++ b/src/main/scala/org/tbasket/EndpointSetup.scala @@ -10,23 +10,21 @@ object EndpointSetup { final val EndpointUrl = "endpoint.url" final val EndpointUrlDefault = s"localhost:48485" - def setupEndpoint(): Endpoint = { + def setupEndpoint(config: Properties): Endpoint = { Main.LOG.debug("Initializing API endpoint...") - val endpoint = createEndpoint() + val endpoint = createEndpoint(config) endpoint.bind("counter")(IncrementHandler) endpoint } - private def createEndpoint(): Endpoint = { - val properties = new Properties() - val in = getClass.getClassLoader.getResourceAsStream("server.properties") - properties.load(in) - val (hostname, port) = properties + private def createEndpoint(config: Properties): Endpoint = { + val port = config .getProperty(EndpointUrl, EndpointUrlDefault) match { - case s"$ip:$port" => (ip, port.toInt) - case v => throw new InternalBasketServerException(s"$EndpointUrl property value is wrong: $v must be :/[endpointPath]") + case s"$port" if port.toIntOption.isDefined => port.toInt + case v => + throw new InternalBasketServerException(s"$EndpointUrl property value is wrong: $v must be integer") } - new Endpoint(hostname, port) + new Endpoint(port) } } diff --git a/src/main/scala/org/tbasket/Main.scala b/src/main/scala/org/tbasket/Main.scala index 6977068..2486558 100644 --- a/src/main/scala/org/tbasket/Main.scala +++ b/src/main/scala/org/tbasket/Main.scala @@ -5,6 +5,8 @@ import org.apache.logging.log4j.LogManager import zio._ import java.lang +import java.nio.file.{Files, Path} +import java.util.Properties import scala.io.StdIn import scala.util.control.NonFatal @@ -13,8 +15,19 @@ object Main { def main(args: Array[String]): Unit = { LOG.info("Starting server") - val endpoint = EndpointSetup.setupEndpoint() - val runtime = Runtime.default + val config = retrieveConfig + db(config) + api(config) + LOG.info("Server successfully started") + } + + private def db(config: Properties): Unit = new Thread({ () => + }, "Database").start() + //TODO + + private def api(config: Properties): Unit = new Thread({ () => + val endpoint = EndpointSetup.setupEndpoint(config) + val runtime = Runtime.default Unsafe.unsafe { implicit u => runtime.unsafe.run(endpoint.run).catchSome { case NonFatal(e) => @@ -22,9 +35,18 @@ object Main { throw e } } - LOG.info("Server successfully started") - println("enter to exit") - StdIn.readLine() + }: Runnable, "API").start() + + private def retrieveConfig: Properties = { + val configFile = Path.of("server.properties") + if (Files.notExists(configFile)) { + val in = getClass.getResourceAsStream("/server.properties") + Files.writeString(configFile, new String(in.readAllBytes())) + } + val in = Files.newInputStream(configFile) + val properties = new Properties() + properties.load(in) + properties } //add a shutdown hook to log when the server is about to get killed From d251b38291b687d925d32facc000ca4916ff4afa Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 05:59:17 +0100 Subject: [PATCH 03/26] bugfixes --- drone/deploy.sh | 19 ++++++++++++------- src/main/resources/server.properties | 2 +- .../scala/org/tbasket/EndpointSetup.scala | 8 ++++---- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/drone/deploy.sh b/drone/deploy.sh index 52c3b27..34bd49f 100644 --- a/drone/deploy.sh +++ b/drone/deploy.sh @@ -4,18 +4,23 @@ DIR=$(readlink -e "$(dirname "$0")") PROD_SERVER_JAR_NAME="server-prod.jar" NEW_SERVER_JAR_NAME="server-all.jar" -OLD_PID=$(ps -aux | tr -s " " | grep -E "\bjava -jar $PROD_SERVER_JAR_NAME\b" | cut -d " " -f2) -#if $OLD_PID is not empty but isn't a number, something went wrong -if [ "$OLD_PID" ] && ! echo "$OLD_PID" | grep -E -q "^[0-9]+$"; then - echo "error, unable to retrieve old server pid: $OLD_PID" >&2 +prod_pid() { + ps -aux | tr -s " " | grep -E "\bjava -jar $PROD_SERVER_JAR_NAME\b" | cut -d " " -f2 +} + +PROD_PID=$(prod_pid) + +#if $PROD_PID is not empty but isn't a number, something went wrong +if [ "$PROD_PID" ] && ! echo "$PROD_PID" | grep -E -q "^[0-9]+$"; then + echo "error, unable to retrieve old server pid: $PROD_PID" >&2 exit 2 fi -if [ "$OLD_PID" ]; then +if [ "$PROD_PID" ]; then #will cause the old server to gracefully shutdown echo "shutting down old server version ..." - kill -s SIGQUIT "$OLD_PID" - while ! kill -s 0 "$OLD_PID"; do sleep 1; done #sleep until process ends + kill -s SIGQUIT "$PROD_PID" + while [ ! "$(prod_pid)" ]; do sleep 1; done #sleep until process ends fi rm "$DIR/$PROD_SERVER_JAR_NAME" diff --git a/src/main/resources/server.properties b/src/main/resources/server.properties index 52a2da6..aea62c7 100644 --- a/src/main/resources/server.properties +++ b/src/main/resources/server.properties @@ -1 +1 @@ -endpoint.url=48485 \ No newline at end of file +endpoint.port=48485 \ No newline at end of file diff --git a/src/main/scala/org/tbasket/EndpointSetup.scala b/src/main/scala/org/tbasket/EndpointSetup.scala index 78ce397..bda306e 100644 --- a/src/main/scala/org/tbasket/EndpointSetup.scala +++ b/src/main/scala/org/tbasket/EndpointSetup.scala @@ -7,8 +7,8 @@ import java.util.Properties object EndpointSetup { - final val EndpointUrl = "endpoint.url" - final val EndpointUrlDefault = s"localhost:48485" + final val EndpointPort = "endpoint.port" + final val EndpointPortDefault = "48485" def setupEndpoint(config: Properties): Endpoint = { Main.LOG.debug("Initializing API endpoint...") @@ -19,10 +19,10 @@ object EndpointSetup { private def createEndpoint(config: Properties): Endpoint = { val port = config - .getProperty(EndpointUrl, EndpointUrlDefault) match { + .getProperty(EndpointPort, EndpointPortDefault) match { case s"$port" if port.toIntOption.isDefined => port.toInt case v => - throw new InternalBasketServerException(s"$EndpointUrl property value is wrong: $v must be integer") + throw new InternalBasketServerException(s"$EndpointPort property value is wrong: $v must be integer") } new Endpoint(port) } From 6e129782a7cbe87e20de4611b19f57f8d5d275df Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 06:05:03 +0100 Subject: [PATCH 04/26] bugfixes --- drone/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drone/deploy.sh b/drone/deploy.sh index 34bd49f..22bc7ce 100644 --- a/drone/deploy.sh +++ b/drone/deploy.sh @@ -19,7 +19,7 @@ fi if [ "$PROD_PID" ]; then #will cause the old server to gracefully shutdown echo "shutting down old server version ..." - kill -s SIGQUIT "$PROD_PID" + kill -s SIGINT "$PROD_PID" while [ ! "$(prod_pid)" ]; do sleep 1; done #sleep until process ends fi From 0b804fc7fbc9ab3725f47349ed7a82cacdbc0c8c Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 06:15:17 +0100 Subject: [PATCH 05/26] bugfix --- drone/start.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drone/start.sh b/drone/start.sh index 3373e87..31297b0 100644 --- a/drone/start.sh +++ b/drone/start.sh @@ -1,3 +1,3 @@ - +DIR=$(readlink -e "$(dirname "$0")") echo "starting server" -java -jar "server-prod.jar" +java -jar "$DIR/server-prod.jar" From 3d9bfc0498fe7ecfd944463a3c3d1959cc2d56b1 Mon Sep 17 00:00:00 2001 From: Maxime BATISTA Date: Sun, 4 Dec 2022 16:47:27 +0100 Subject: [PATCH 06/26] Update 'drone/.drone.yml' --- drone/.drone.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drone/.drone.yml b/drone/.drone.yml index 768a49f..d85bd27 100644 --- a/drone/.drone.yml +++ b/drone/.drone.yml @@ -2,11 +2,6 @@ kind: pipeline type: docker name: Deployment -trigger: - branch: - - production - - dev - - drone-setup steps: - name: Unit tests From 7c8e46d70bbd8f4f3f278bd31a68e3a045b5022b Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:20:15 +0100 Subject: [PATCH 07/26] splited delivery scripts --- drone/deliver.sh | 36 +----------------------------------- drone/prepare-deliver.sh | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 35 deletions(-) create mode 100644 drone/prepare-deliver.sh diff --git a/drone/deliver.sh b/drone/deliver.sh index 44accf1..fe1e110 100644 --- a/drone/deliver.sh +++ b/drone/deliver.sh @@ -1,40 +1,6 @@ #!/usr/bin/env bash -echo "installing packages..." -yum update > /dev/null -yum -y install openssh-clients openssh-client > /dev/null -echo "done." - -rm -rf /root/.ssh -mkdir -p /root/.ssh -echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa -echo "$SSH_PUBLIC_KEY" > /root/.ssh/id_rsa.pub -chmod 0600 /root/.ssh/* -chmod 700 /root/.ssh -ls -lsh /root/.ssh -ls -ld /root/.ssh -pwd - -case "$1" in - "dev") - USER=maxime - IP=92.132.18.192 - DIR=server/TBasket/backend - ;; - "production") - USER=palafour - IP=193.49.118.205 - DIR=TBasket/backend - ;; - "") - echo "first argument is missing" >&2 - exit 1 - ;; - *) - echo "branch $1 is unable to perform delivery, authorized branches are 'dev and production' for delivery." >&2 - echo "delivery step skipped" - exit 0 -esac +./drone/prepare-delivery.sh ./gradlew :shadowJar diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh new file mode 100644 index 0000000..a1808b8 --- /dev/null +++ b/drone/prepare-deliver.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +#use the right command to install packages +if [ "$(command -v apt)" ]; then CMD=apt; else CMD=yum; fi + +echo "installing packages..." +eval $CMD update > /dev/null +eval $CMD -y install openssh-client > /dev/null +echo "done." + +echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa +echo "$SSH_PUBLIC_KEY" > /root/.ssh/id_rsa.pub +chmod 0600 /root/.ssh/* +chmod 700 /root/.ssh + +case "$1" in + "dev") + export USER=maxime + export IP=92.132.18.192 + export DIR=server/TBasket/backend + ;; + "production") + export USER=palafour + export IP=193.49.118.205 + export DIR=TBasket/backend + ;; + "") + echo "first argument is missing" >&2 + exit 1 + ;; + *) + echo "branch $1 is unable to perform delivery, authorized branches are 'dev and production' for delivery." >&2 + echo "delivery step skipped" + exit 0 +esac \ No newline at end of file From e3ee8336cdee65dc5289ba50ce39c48b0e5a1aa4 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:23:18 +0100 Subject: [PATCH 08/26] optimisations --- drone/.drone.yml | 6 ++++++ drone/deliver.sh | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/drone/.drone.yml b/drone/.drone.yml index d85bd27..48d38b5 100644 --- a/drone/.drone.yml +++ b/drone/.drone.yml @@ -6,6 +6,9 @@ name: Deployment steps: - name: Unit tests image: amazoncorretto:11 + volumes: + - name: build + path: ./build commands: - echo - ./gradlew :test @@ -19,6 +22,9 @@ steps: from_secret: SSH_PRIVATE SSH_PUBLIC_KEY: from_secret: SSH_PUBLIC + volumes: + - name: build + path: ./build commands: - chmod 777 drone/deliver.sh - drone/deliver.sh $DRONE_BRANCH diff --git a/drone/deliver.sh b/drone/deliver.sh index fe1e110..267936f 100644 --- a/drone/deliver.sh +++ b/drone/deliver.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -./drone/prepare-delivery.sh +./drone/prepare-deliver.sh ./gradlew :shadowJar From 53aed4c66284468d513ce97b44347b445b7feb5b Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:25:47 +0100 Subject: [PATCH 09/26] drone script fixes --- drone/deliver.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/drone/deliver.sh b/drone/deliver.sh index 267936f..f482048 100644 --- a/drone/deliver.sh +++ b/drone/deliver.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash +chmod 700 ./drone/prepare-deliver.sh ./drone/prepare-deliver.sh ./gradlew :shadowJar From 74f448c5452e6fdfd180806c865d092823db9793 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:30:33 +0100 Subject: [PATCH 10/26] drone script fixes --- drone/prepare-deliver.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index a1808b8..43a035d 100644 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -8,6 +8,7 @@ eval $CMD update > /dev/null eval $CMD -y install openssh-client > /dev/null echo "done." +mkdir /root/.ssh echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa echo "$SSH_PUBLIC_KEY" > /root/.ssh/id_rsa.pub chmod 0600 /root/.ssh/* From 96120c06b7d72f3d0b456f42cbafc004ca4af166 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:33:24 +0100 Subject: [PATCH 11/26] drone script fixes --- drone/.drone.yml | 2 +- drone/prepare-deliver.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drone/.drone.yml b/drone/.drone.yml index 48d38b5..3a5a6bc 100644 --- a/drone/.drone.yml +++ b/drone/.drone.yml @@ -27,4 +27,4 @@ steps: path: ./build commands: - chmod 777 drone/deliver.sh - - drone/deliver.sh $DRONE_BRANCH + - drone/deliver.sh diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index 43a035d..9839cbf 100644 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -14,7 +14,7 @@ echo "$SSH_PUBLIC_KEY" > /root/.ssh/id_rsa.pub chmod 0600 /root/.ssh/* chmod 700 /root/.ssh -case "$1" in +case "$DRONE_BRANCH" in "dev") export USER=maxime export IP=92.132.18.192 @@ -26,7 +26,7 @@ case "$1" in export DIR=TBasket/backend ;; "") - echo "first argument is missing" >&2 + echo "DRONE_BRANCH is missing" >&2 exit 1 ;; *) From 583f9d6d59bde16c43b17b0975a2e0a8cb01dcab Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:37:09 +0100 Subject: [PATCH 12/26] drone script fixes --- drone/prepare-deliver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index 9839cbf..4aad423 100644 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -5,7 +5,7 @@ if [ "$(command -v apt)" ]; then CMD=apt; else CMD=yum; fi echo "installing packages..." eval $CMD update > /dev/null -eval $CMD -y install openssh-client > /dev/null +eval $CMD -y install openssh-client openssh-clients > /dev/null echo "done." mkdir /root/.ssh From 21da8a0762043d08d9139f60b4d28b8a99220853 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:45:46 +0100 Subject: [PATCH 13/26] drone script fixes --- drone/deliver.sh | 2 +- drone/prepare-deliver.sh | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) mode change 100644 => 100755 drone/deliver.sh mode change 100644 => 100755 drone/prepare-deliver.sh diff --git a/drone/deliver.sh b/drone/deliver.sh old mode 100644 new mode 100755 index f482048..42debc8 --- a/drone/deliver.sh +++ b/drone/deliver.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash chmod 700 ./drone/prepare-deliver.sh -./drone/prepare-deliver.sh +source ./drone/prepare-deliver.sh ./gradlew :shadowJar diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh old mode 100644 new mode 100755 index 4aad423..232a436 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -16,14 +16,14 @@ chmod 700 /root/.ssh case "$DRONE_BRANCH" in "dev") - export USER=maxime - export IP=92.132.18.192 - export DIR=server/TBasket/backend + USER=maxime + IP=92.132.18.192 + DIR=server/TBasket/backend ;; "production") - export USER=palafour - export IP=193.49.118.205 - export DIR=TBasket/backend + USER=palafour + IP=193.49.118.205 + DIR=TBasket/backend ;; "") echo "DRONE_BRANCH is missing" >&2 From 78ca85eaffbd8183e215e14dda162ab0655c0dd1 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 17:58:59 +0100 Subject: [PATCH 14/26] drone script fixes --- drone/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drone/deploy.sh b/drone/deploy.sh index 22bc7ce..7d191ab 100644 --- a/drone/deploy.sh +++ b/drone/deploy.sh @@ -19,7 +19,7 @@ fi if [ "$PROD_PID" ]; then #will cause the old server to gracefully shutdown echo "shutting down old server version ..." - kill -s SIGINT "$PROD_PID" + kill "$PROD_PID" while [ ! "$(prod_pid)" ]; do sleep 1; done #sleep until process ends fi From 81abb03b8a9ef6d8867bb56508d19301c4625d37 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 21:09:12 +0100 Subject: [PATCH 15/26] drone script fixes --- drone/prepare-deliver.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index 232a436..dffd314 100755 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -1,11 +1,20 @@ #!/usr/bin/env bash -#use the right command to install packages -if [ "$(command -v apt)" ]; then CMD=apt; else CMD=yum; fi - echo "installing packages..." -eval $CMD update > /dev/null -eval $CMD -y install openssh-client openssh-clients > /dev/null +#use the right command to install packages +if [ "$(command -v apt)" ]; then + apt update > /dev/null + apt -y install openssh-client openssh-clients > /dev/null +elif [ "$(command -v yum)" ]; then + yum update > /dev/null + yum -y install openssh-client openssh-clients > /dev/null +elif [ "$(command -v apk)" ]; then + apk update > /dev/null + apk add openssh-client openssh-clients > /dev/null +else + echo "could not find a package manager, anborting" >&2 + exit 1 +fi echo "done." mkdir /root/.ssh From 3bd0662ab0a3117e8c40a423e6ae9ccaa2563fab Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 21:16:12 +0100 Subject: [PATCH 16/26] drone script fixes --- drone/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drone/deploy.sh b/drone/deploy.sh index 7d191ab..0dd2227 100644 --- a/drone/deploy.sh +++ b/drone/deploy.sh @@ -5,7 +5,7 @@ PROD_SERVER_JAR_NAME="server-prod.jar" NEW_SERVER_JAR_NAME="server-all.jar" prod_pid() { - ps -aux | tr -s " " | grep -E "\bjava -jar $PROD_SERVER_JAR_NAME\b" | cut -d " " -f2 + ps -aux | tr -s " " | grep -E "\bjava -jar .*$PROD_SERVER_JAR_NAME\b" | cut -d " " -f2 } PROD_PID=$(prod_pid) From d879e65d631630ab8e8ed6627f79a2b1e612ef11 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 21:19:38 +0100 Subject: [PATCH 17/26] drone script fixes --- drone/prepare-deliver.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index dffd314..902da91 100755 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -10,9 +10,9 @@ elif [ "$(command -v yum)" ]; then yum -y install openssh-client openssh-clients > /dev/null elif [ "$(command -v apk)" ]; then apk update > /dev/null - apk add openssh-client openssh-clients > /dev/null + apk add openssh > /dev/null else - echo "could not find a package manager, anborting" >&2 + echo "could not find a package manager, aborting" >&2 exit 1 fi echo "done." @@ -37,7 +37,7 @@ case "$DRONE_BRANCH" in "") echo "DRONE_BRANCH is missing" >&2 exit 1 - ;; + ;; *) echo "branch $1 is unable to perform delivery, authorized branches are 'dev and production' for delivery." >&2 echo "delivery step skipped" From 8f07b74d9ced3f1c342968f67b40fb4b012422f4 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 21:29:44 +0100 Subject: [PATCH 18/26] drone script fixes --- drone/deliver.sh | 4 ++-- drone/prepare-deliver.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drone/deliver.sh b/drone/deliver.sh index 42debc8..a64c7d1 100755 --- a/drone/deliver.sh +++ b/drone/deliver.sh @@ -5,6 +5,6 @@ source ./drone/prepare-deliver.sh ./gradlew :shadowJar -echo "making delivery onto '$USER@$IP:$DIR'" +echo "making delivery onto '$USER@$IP:$DIR/backend'" scp -o "StrictHostKeyChecking no" "build/libs/server-all.jar" "drone/deploy.sh" "drone/start.sh" "$USER@$IP:$DIR/" -echo "chmod 700 $DIR/*; $DIR/deploy.sh" | ssh -o "StrictHostKeyChecking no" $USER@$IP +echo "chmod 700 $DIR/backend/*; $DIR/backend/deploy.sh" | ssh -o "StrictHostKeyChecking no" $USER@$IP diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index 902da91..628dc64 100755 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -27,12 +27,12 @@ case "$DRONE_BRANCH" in "dev") USER=maxime IP=92.132.18.192 - DIR=server/TBasket/backend + DIR=server/TBasket ;; "production") USER=palafour IP=193.49.118.205 - DIR=TBasket/backend + DIR=TBasket ;; "") echo "DRONE_BRANCH is missing" >&2 From d87206b1fb537739e4cd6aaea1ba6d57c4a6e6cf Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 21:49:03 +0100 Subject: [PATCH 19/26] drone script fixes --- drone/deploy.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drone/deploy.sh b/drone/deploy.sh index 0dd2227..116fb44 100644 --- a/drone/deploy.sh +++ b/drone/deploy.sh @@ -21,10 +21,11 @@ if [ "$PROD_PID" ]; then echo "shutting down old server version ..." kill "$PROD_PID" while [ ! "$(prod_pid)" ]; do sleep 1; done #sleep until process ends + echo "server shut down" fi rm "$DIR/$PROD_SERVER_JAR_NAME" -mv "$DIR/$NEW_SERVER_JAR_NAME" "$DIR/$PROD_SERVER_JAR_NAME" +mv "$DIR/$NEW_SERVER_JAR_NAME" "$DIR/$PROD_SERVER_JAR_NAME" || ls SCREEN="basket" From b5ce74b0f1720a1d9be707cb86ea8bf4e322bc50 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 21:54:53 +0100 Subject: [PATCH 20/26] drone script fixes --- drone/deliver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drone/deliver.sh b/drone/deliver.sh index a64c7d1..2b8f212 100755 --- a/drone/deliver.sh +++ b/drone/deliver.sh @@ -6,5 +6,5 @@ source ./drone/prepare-deliver.sh ./gradlew :shadowJar echo "making delivery onto '$USER@$IP:$DIR/backend'" -scp -o "StrictHostKeyChecking no" "build/libs/server-all.jar" "drone/deploy.sh" "drone/start.sh" "$USER@$IP:$DIR/" +scp -o "StrictHostKeyChecking no" "build/libs/server-all.jar" "drone/deploy.sh" "drone/start.sh" "$USER@$IP:$DIR/backend" echo "chmod 700 $DIR/backend/*; $DIR/backend/deploy.sh" | ssh -o "StrictHostKeyChecking no" $USER@$IP From 28aff516eb82f2c35568dba5f80332303e4379f6 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 22:01:07 +0100 Subject: [PATCH 21/26] fixed concurrent incrementation problems --- src/main/scala/org/tbasket/EndpointSetup.scala | 2 +- .../{compute => handler}/IncrementHandler.scala | 10 ++++++---- .../org/tbasket/test/IncrementRequestHandler.scala | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) rename src/main/scala/org/tbasket/{compute => handler}/IncrementHandler.scala (66%) diff --git a/src/main/scala/org/tbasket/EndpointSetup.scala b/src/main/scala/org/tbasket/EndpointSetup.scala index bda306e..622b00f 100644 --- a/src/main/scala/org/tbasket/EndpointSetup.scala +++ b/src/main/scala/org/tbasket/EndpointSetup.scala @@ -1,7 +1,7 @@ package org.tbasket import org.tbasket.api.Endpoint -import org.tbasket.compute.IncrementHandler +import org.tbasket.handler.IncrementHandler import java.util.Properties diff --git a/src/main/scala/org/tbasket/compute/IncrementHandler.scala b/src/main/scala/org/tbasket/handler/IncrementHandler.scala similarity index 66% rename from src/main/scala/org/tbasket/compute/IncrementHandler.scala rename to src/main/scala/org/tbasket/handler/IncrementHandler.scala index e8aed70..353290e 100644 --- a/src/main/scala/org/tbasket/compute/IncrementHandler.scala +++ b/src/main/scala/org/tbasket/handler/IncrementHandler.scala @@ -1,20 +1,22 @@ -package org.tbasket.compute +package org.tbasket.handler import org.tbasket.api.compute.APIRequestHandler import zio.http.{Request, Response} +import java.util.concurrent.atomic.AtomicInteger + object IncrementHandler extends APIRequestHandler { - @volatile private var i = 0 + private val i = new AtomicInteger(0) - def getCounter: Int = i + def getCounter: Int = i.get() override def get(request: Request): Response = { Response.json(s"{\"value\": $i}") } override def post(request: Request): Response = { - i += 1 + i.incrementAndGet() println(s"Counter is now $i") Response.ok } diff --git a/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala b/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala index 17f0aac..8abe87f 100644 --- a/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala +++ b/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala @@ -2,7 +2,7 @@ package org.tbasket.test import io.circe.parser._ import org.junit.jupiter.api.{Assertions, Test} -import org.tbasket.compute.IncrementHandler +import org.tbasket.handler.IncrementHandler import zio.http.model.Status import zio.http.{Body, Path, Request, URL} From e03ed9990a4ba35048315c64913337ba9bdad88c Mon Sep 17 00:00:00 2001 From: Override-6 Date: Sun, 4 Dec 2022 22:14:46 +0100 Subject: [PATCH 22/26] fixed concurrent incrementation problems --- src/main/scala/org/tbasket/handler/IncrementHandler.scala | 8 ++++---- .../scala/org/tbasket/test/IncrementRequestHandler.scala | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/scala/org/tbasket/handler/IncrementHandler.scala b/src/main/scala/org/tbasket/handler/IncrementHandler.scala index 353290e..eca2a00 100644 --- a/src/main/scala/org/tbasket/handler/IncrementHandler.scala +++ b/src/main/scala/org/tbasket/handler/IncrementHandler.scala @@ -7,16 +7,16 @@ import java.util.concurrent.atomic.AtomicInteger object IncrementHandler extends APIRequestHandler { - private val i = new AtomicInteger(0) + private val counter = new AtomicInteger(0) - def getCounter: Int = i.get() + def getCounter: Int = counter.get() override def get(request: Request): Response = { - Response.json(s"{\"value\": $i}") + Response.json(s"{\"value\": ${counter.get()}}") } override def post(request: Request): Response = { - i.incrementAndGet() + val i = counter.incrementAndGet() println(s"Counter is now $i") Response.ok } diff --git a/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala b/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala index 8abe87f..c1bd5ba 100644 --- a/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala +++ b/src/test/scala/org/tbasket/test/IncrementRequestHandler.scala @@ -18,6 +18,8 @@ class IncrementRequestHandler { Assertions.assertEquals(last + 1, IncrementHandler.getCounter) } + + @Test def testGetIncrement(): Unit = { val counter = IncrementHandler.getCounter From 8e2293e2ee951ca7ae010f9c8c12bf4912c25fe2 Mon Sep 17 00:00:00 2001 From: Maxime BATISTA Date: Mon, 5 Dec 2022 15:55:56 +0100 Subject: [PATCH 23/26] Update 'src/main/scala/org/tbasket/handler/IncrementHandler.scala' --- src/main/scala/org/tbasket/handler/IncrementHandler.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/org/tbasket/handler/IncrementHandler.scala b/src/main/scala/org/tbasket/handler/IncrementHandler.scala index eca2a00..295185d 100644 --- a/src/main/scala/org/tbasket/handler/IncrementHandler.scala +++ b/src/main/scala/org/tbasket/handler/IncrementHandler.scala @@ -17,7 +17,7 @@ object IncrementHandler extends APIRequestHandler { override def post(request: Request): Response = { val i = counter.incrementAndGet() - println(s"Counter is now $i") + println(s"Counter is maintenant : $i") Response.ok } } From 3c29df66195bf2719e9c228a988ff18e01601654 Mon Sep 17 00:00:00 2001 From: Maxime BATISTA Date: Mon, 5 Dec 2022 16:06:11 +0100 Subject: [PATCH 24/26] Update 'src/main/scala/org/tbasket/handler/IncrementHandler.scala' --- src/main/scala/org/tbasket/handler/IncrementHandler.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/org/tbasket/handler/IncrementHandler.scala b/src/main/scala/org/tbasket/handler/IncrementHandler.scala index 295185d..3b37467 100644 --- a/src/main/scala/org/tbasket/handler/IncrementHandler.scala +++ b/src/main/scala/org/tbasket/handler/IncrementHandler.scala @@ -17,7 +17,7 @@ object IncrementHandler extends APIRequestHandler { override def post(request: Request): Response = { val i = counter.incrementAndGet() - println(s"Counter is maintenant : $i") + println(s"(thread ${Thread.currentThread()}) Counter incremented : $i") Response.ok } } From d90cf2a6596a06708ae3c98da775428b1f778933 Mon Sep 17 00:00:00 2001 From: Pascal LAFOURCADE Date: Thu, 8 Dec 2022 18:23:47 +0100 Subject: [PATCH 25/26] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'drone/prepar?= =?UTF-8?q?e-deliver.sh'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- drone/prepare-deliver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index 628dc64..c0ee1a9 100755 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -27,7 +27,7 @@ case "$DRONE_BRANCH" in "dev") USER=maxime IP=92.132.18.192 - DIR=server/TBasket + DIR=public_html/TBasket/ ;; "production") USER=palafour From ecfcdda501b85f8b4be10a8c48eb643b4d4c1014 Mon Sep 17 00:00:00 2001 From: Pascal LAFOURCADE Date: Thu, 8 Dec 2022 18:28:49 +0100 Subject: [PATCH 26/26] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'drone/prepar?= =?UTF-8?q?e-deliver.sh'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- drone/prepare-deliver.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drone/prepare-deliver.sh b/drone/prepare-deliver.sh index c0ee1a9..f5edc98 100755 --- a/drone/prepare-deliver.sh +++ b/drone/prepare-deliver.sh @@ -27,12 +27,12 @@ case "$DRONE_BRANCH" in "dev") USER=maxime IP=92.132.18.192 - DIR=public_html/TBasket/ + DIR=server/TBasket/ ;; "production") USER=palafour IP=193.49.118.205 - DIR=TBasket + DIR=public_html/TBasket/ ;; "") echo "DRONE_BRANCH is missing" >&2