κρμγ 4 years ago
parent
commit
b96cd277f3
7 changed files with 219 additions and 3 deletions
  1. 8 2
      .drone.yml
  2. 9 0
      Dockerfile
  3. 1 1
      pom.xml
  4. 8 0
      run.sh
  5. 10 0
      src/app/dist/frei-app/index.html
  6. 6 0
      src/main/resources/application-production.yaml
  7. 177 0
      wait-for-it.sh

+ 8 - 2
.drone.yml

@@ -4,7 +4,7 @@ pipeline:
     commands:
       - cd src/app
       - yarn
-      - yarn build
+      #    - yarn build
       - rm -rf ./node_modules
       - mkdir -p ./src/main/resources/static
       - cp -r ./dist/frei-app/* ./src/main/resources/static/
@@ -12,4 +12,10 @@ pipeline:
   build-backend:
     image: maven:3.3.9-jdk-8
     commands:
-      - mvn package
+      - mvn package
+
+  deploy-backend:
+    image: docker
+    commands:
+      - apk add --no-cache openssh-client net-tools
+      - mkdir -p ~/.ssh

+ 9 - 0
Dockerfile

@@ -0,0 +1,9 @@
+FROM openjdk:8-jdk
+EXPOSE 80
+RUN ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
+ADD ./target/frei.jar /usr/local/share/frei/frei.jar
+ADD ./run.sh /run.sh
+RUN chmod a+x /run.sh
+ADD ./wait-for-it.sh /wait-for-it
+RUN chmod a+x /wait-for-it
+CMD /run.sh

+ 1 - 1
pom.xml

@@ -13,7 +13,7 @@
         <java.version>1.8</java.version>
         <kotlin.version>1.3.72</kotlin.version>
         <target>1.8</target>
-        <start-class>inn.ocsf.bee.freigeld.FreiApp</start-class>
+        <start-class>inn.ocsf.bee.freigeld.FreiAppKt</start-class>
         <spring.version>2.2.6.RELEASE</spring.version>
     </properties>
 

+ 8 - 0
run.sh

@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+/wait-for-it 77.244.213.167:27017 -- echo mongo ready
+
+#c=($(getent hosts urran_broadcast));
+#echo ${c[0]} ${c[1]}
+
+java -jar -XX:+UseG1GC -Xmx500m -Xms64m -Dspring.profiles.active=production /usr/local/share/frei/frei.jar

+ 10 - 0
src/app/dist/frei-app/index.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>INDEX :: FREIGELD</title>
+</head>
+<body>
+  YOUR FREI UNDER MAINTENANCE NOW!
+</body>
+</html>

+ 6 - 0
src/main/resources/application-production.yaml

@@ -0,0 +1,6 @@
+server:
+  port: 80
+spring:
+  data:
+    mongodb:
+      uri: mongodb://77.244.213.167:27017/frei?replicaSet=frei0

+ 177 - 0
wait-for-it.sh

@@ -0,0 +1,177 @@
+#!/usr/bin/env bash
+#   Use this script to test if a given TCP host/port are available
+
+cmdname=$(basename $0)
+
+echoerr() { if [[ $QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
+
+usage()
+{
+    cat << USAGE >&2
+Usage:
+    $cmdname host:port [-s] [-t timeout] [-- command args]
+    -h HOST | --host=HOST       Host or IP under test
+    -p PORT | --port=PORT       TCP port under test
+                                Alternatively, you specify the host and port as host:port
+    -s | --strict               Only execute subcommand if the test succeeds
+    -q | --quiet                Don't output any status messages
+    -t TIMEOUT | --timeout=TIMEOUT
+                                Timeout in seconds, zero for no timeout
+    -- COMMAND ARGS             Execute command with args after the test finishes
+USAGE
+    exit 1
+}
+
+wait_for()
+{
+    if [[ $TIMEOUT -gt 0 ]]; then
+        echoerr "$cmdname: waiting $TIMEOUT seconds for $HOST:$PORT"
+    else
+        echoerr "$cmdname: waiting for $HOST:$PORT without a timeout"
+    fi
+    start_ts=$(date +%s)
+    while :
+    do
+        if [[ $ISBUSY -eq 1 ]]; then
+            nc -z $HOST $PORT
+            result=$?
+        else
+            (echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1
+            result=$?
+        fi
+        if [[ $result -eq 0 ]]; then
+            end_ts=$(date +%s)
+            echoerr "$cmdname: $HOST:$PORT is available after $((end_ts - start_ts)) seconds"
+            break
+        fi
+        sleep 1
+    done
+    return $result
+}
+
+wait_for_wrapper()
+{
+    # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
+    if [[ $QUIET -eq 1 ]]; then
+        timeout $BUSYTIMEFLAG $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT &
+    else
+        timeout $BUSYTIMEFLAG $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT &
+    fi
+    PID=$!
+    trap "kill -INT -$PID" INT
+    wait $PID
+    RESULT=$?
+    if [[ $RESULT -ne 0 ]]; then
+        echoerr "$cmdname: timeout occurred after waiting $TIMEOUT seconds for $HOST:$PORT"
+    fi
+    return $RESULT
+}
+
+# process arguments
+while [[ $# -gt 0 ]]
+do
+    case "$1" in
+        *:* )
+        hostport=(${1//:/ })
+        HOST=${hostport[0]}
+        PORT=${hostport[1]}
+        shift 1
+        ;;
+        --child)
+        CHILD=1
+        shift 1
+        ;;
+        -q | --quiet)
+        QUIET=1
+        shift 1
+        ;;
+        -s | --strict)
+        STRICT=1
+        shift 1
+        ;;
+        -h)
+        HOST="$2"
+        if [[ $HOST == "" ]]; then break; fi
+        shift 2
+        ;;
+        --host=*)
+        HOST="${1#*=}"
+        shift 1
+        ;;
+        -p)
+        PORT="$2"
+        if [[ $PORT == "" ]]; then break; fi
+        shift 2
+        ;;
+        --port=*)
+        PORT="${1#*=}"
+        shift 1
+        ;;
+        -t)
+        TIMEOUT="$2"
+        if [[ $TIMEOUT == "" ]]; then break; fi
+        shift 2
+        ;;
+        --timeout=*)
+        TIMEOUT="${1#*=}"
+        shift 1
+        ;;
+        --)
+        shift
+        CLI=("$@")
+        break
+        ;;
+        --help)
+        usage
+        ;;
+        *)
+        echoerr "Unknown argument: $1"
+        usage
+        ;;
+    esac
+done
+
+if [[ "$HOST" == "" || "$PORT" == "" ]]; then
+    echoerr "Error: you need to provide a host and port to test."
+    usage
+fi
+
+TIMEOUT=${TIMEOUT:-15}
+STRICT=${STRICT:-0}
+CHILD=${CHILD:-0}
+QUIET=${QUIET:-0}
+
+# check to see if timeout is from busybox?
+# check to see if timeout is from busybox?
+TIMEOUT_PATH=$(realpath $(which timeout))
+if [[ $TIMEOUT_PATH =~ "busybox" ]]; then
+        ISBUSY=1
+        BUSYTIMEFLAG="-t"
+else
+        ISBUSY=0
+        BUSYTIMEFLAG=""
+fi
+
+if [[ $CHILD -gt 0 ]]; then
+    wait_for
+    RESULT=$?
+    exit $RESULT
+else
+    if [[ $TIMEOUT -gt 0 ]]; then
+        wait_for_wrapper
+        RESULT=$?
+    else
+        wait_for
+        RESULT=$?
+    fi
+fi
+
+if [[ $CLI != "" ]]; then
+    if [[ $RESULT -ne 0 && $STRICT -eq 1 ]]; then
+        echoerr "$cmdname: strict mode, refusing to execute subprocess"
+        exit $RESULT
+    fi
+    exec "${CLI[@]}"
+else
+    exit $RESULT
+fi