Compare commits
No commits in common. 'd649e6842cbd9021824255b1c9de274be7453868' and '83836d13f61099d1da9806854df7900204199975' have entirely different histories.
d649e6842c
...
83836d13f6
@ -0,0 +1,31 @@
|
|||||||
|
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
|
@ -1,30 +0,0 @@
|
|||||||
kind: pipeline
|
|
||||||
type: docker
|
|
||||||
name: Deployment
|
|
||||||
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Unit tests
|
|
||||||
image: amazoncorretto:11
|
|
||||||
volumes:
|
|
||||||
- name: build
|
|
||||||
path: ./build
|
|
||||||
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
|
|
||||||
volumes:
|
|
||||||
- name: build
|
|
||||||
path: ./build
|
|
||||||
commands:
|
|
||||||
- chmod 777 drone/deliver.sh
|
|
||||||
- drone/deliver.sh
|
|
@ -1,10 +1,12 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
chmod 700 ./drone/prepare-deliver.sh
|
apt update && apt install openjdk-11-jdk sftp -y
|
||||||
source ./drone/prepare-deliver.sh
|
|
||||||
|
|
||||||
./gradlew :shadowJar
|
PATH="$PATH:."
|
||||||
|
|
||||||
echo "making delivery onto '$USER@$IP:$DIR/backend'"
|
gradlew :shadowJar
|
||||||
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
|
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'
|
@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
echo "installing packages..."
|
|
||||||
#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 > /dev/null
|
|
||||||
else
|
|
||||||
echo "could not find a package manager, aborting" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
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/*
|
|
||||||
chmod 700 /root/.ssh
|
|
||||||
|
|
||||||
case "$DRONE_BRANCH" in
|
|
||||||
"dev")
|
|
||||||
USER=maxime
|
|
||||||
IP=92.132.18.192
|
|
||||||
DIR=server/TBasket/
|
|
||||||
;;
|
|
||||||
"production")
|
|
||||||
USER=palafour
|
|
||||||
IP=193.49.118.205
|
|
||||||
DIR=public_html/TBasket/
|
|
||||||
;;
|
|
||||||
"")
|
|
||||||
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"
|
|
||||||
exit 0
|
|
||||||
esac
|
|
@ -1,3 +0,0 @@
|
|||||||
DIR=$(readlink -e "$(dirname "$0")")
|
|
||||||
echo "starting server"
|
|
||||||
java -jar "$DIR/server-prod.jar"
|
|
@ -1,39 +0,0 @@
|
|||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
|
||||||
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
|
|
||||||
AQIDBA==
|
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
|
@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDUvSkSfa1FWZ7PQ2XMTjm59z6rR6Kz/lvSj6W8jOy6HGTcAWnQGn8MTCepOeh98wvHsZALj0ueAOb2AW7vinbeu21o24otLKruRYU/lmzMN0fFKhvOm8XLvmKzlkOn/BQMNVCR53Qhdb4HL7fBo6dcDeR24ptsaAydRjOMApOQ0q1m9EMmc2FZfvJdGoUEwn8m4KBFZpqpqaxEz+5EyL+jmwDuWrZx9e+pVzjsNI6j4TAWV03LzThveK3kBMOVHH+QzdaT2gxN9Sy5RvICLt2/gfD6Cd79bDHBGiFhmu/q3NiifHSx1RWJ+QScBp0oqUdHe6TRHEYd0knRkwaqGvB2dcidXXSZySmaLqOCZZTvV1O72F4Mbu/vv1mG9E3QbjEFJ7Bun6Lxl1eEy9ZhrAIJdFDN3n8GvAxGQEZdSnK3Fi9ADwueUZiCkebgo0CPaFFwLDv7nsyWhLsnm/u8nXQHiqWJVm3WvPUSCXH2vHcYjEv/Lct0yniYIv9rPDmoacs= palafour@iMac-de-Pascal.local.isima.fr
|
|
@ -1 +1 @@
|
|||||||
endpoint.port=48485
|
endpoint.url=localhost:48485
|
@ -1,30 +1,32 @@
|
|||||||
package org.tbasket
|
package org.tbasket
|
||||||
|
|
||||||
import org.tbasket.api.Endpoint
|
import org.tbasket.api.Endpoint
|
||||||
import org.tbasket.handler.IncrementHandler
|
import org.tbasket.compute.IncrementHandler
|
||||||
|
|
||||||
import java.util.Properties
|
import java.util.Properties
|
||||||
|
|
||||||
object EndpointSetup {
|
object EndpointSetup {
|
||||||
|
|
||||||
final val EndpointPort = "endpoint.port"
|
final val EndpointUrl = "endpoint.url"
|
||||||
final val EndpointPortDefault = "48485"
|
final val EndpointUrlDefault = s"localhost:48485"
|
||||||
|
|
||||||
def setupEndpoint(config: Properties): Endpoint = {
|
def setupEndpoint(): Endpoint = {
|
||||||
Main.LOG.debug("Initializing API endpoint...")
|
Main.LOG.debug("Initializing API endpoint...")
|
||||||
val endpoint = createEndpoint(config)
|
val endpoint = createEndpoint()
|
||||||
endpoint.bind("counter")(IncrementHandler)
|
endpoint.bind("counter")(IncrementHandler)
|
||||||
endpoint
|
endpoint
|
||||||
}
|
}
|
||||||
|
|
||||||
private def createEndpoint(config: Properties): Endpoint = {
|
private def createEndpoint(): Endpoint = {
|
||||||
val port = config
|
val properties = new Properties()
|
||||||
.getProperty(EndpointPort, EndpointPortDefault) match {
|
val in = getClass.getClassLoader.getResourceAsStream("server.properties")
|
||||||
case s"$port" if port.toIntOption.isDefined => port.toInt
|
properties.load(in)
|
||||||
case v =>
|
val (hostname, port) = properties
|
||||||
throw new InternalBasketServerException(s"$EndpointPort property value is wrong: $v must be integer")
|
.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 <ip>:<port>/[endpointPath]")
|
||||||
}
|
}
|
||||||
new Endpoint(port)
|
new Endpoint(hostname, port)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package org.tbasket.compute
|
||||||
|
|
||||||
|
import org.tbasket.api.compute.APIRequestHandler
|
||||||
|
import zio.http.{Request, Response}
|
||||||
|
|
||||||
|
object IncrementHandler extends APIRequestHandler {
|
||||||
|
|
||||||
|
@volatile private var i = 0
|
||||||
|
|
||||||
|
def getCounter: Int = i
|
||||||
|
|
||||||
|
override def get(request: Request): Response = {
|
||||||
|
Response.json(s"{\"value\": $i}")
|
||||||
|
}
|
||||||
|
|
||||||
|
override def post(request: Request): Response = {
|
||||||
|
i += 1
|
||||||
|
println(s"Counter is now $i")
|
||||||
|
Response.ok
|
||||||
|
}
|
||||||
|
}
|
@ -1,23 +0,0 @@
|
|||||||
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 {
|
|
||||||
|
|
||||||
private val counter = new AtomicInteger(0)
|
|
||||||
|
|
||||||
def getCounter: Int = counter.get()
|
|
||||||
|
|
||||||
override def get(request: Request): Response = {
|
|
||||||
Response.json(s"{\"value\": ${counter.get()}}")
|
|
||||||
}
|
|
||||||
|
|
||||||
override def post(request: Request): Response = {
|
|
||||||
val i = counter.incrementAndGet()
|
|
||||||
println(s"(thread ${Thread.currentThread()}) Counter incremented : $i")
|
|
||||||
Response.ok
|
|
||||||
}
|
|
||||||
}
|
|
Reference in new issue