From 913c064efefd68f6b95af64a374ee2521998e114 Mon Sep 17 00:00:00 2001 From: skywalker Date: Mon, 26 Aug 2024 18:35:21 +0300 Subject: [PATCH] fix(dev): split to separate scripts --- tools/docker/docker-compose.yml | 12 ++--- tools/scripts/buildAndPush.sh | 30 +++++++++++ tools/scripts/clean.sh | 10 ++-- tools/scripts/client/buildDevImage.sh | 4 +- tools/scripts/client/buildImage.sh | 4 +- tools/scripts/client/pushImage.sh | 4 +- tools/scripts/deploy.sh | 75 ++++++--------------------- tools/scripts/run.sh | 22 ++++---- tools/scripts/runLocal.sh | 12 +++++ tools/scripts/stop.sh | 21 ++++++++ 10 files changed, 103 insertions(+), 91 deletions(-) create mode 100755 tools/scripts/buildAndPush.sh create mode 100755 tools/scripts/runLocal.sh create mode 100755 tools/scripts/stop.sh diff --git a/tools/docker/docker-compose.yml b/tools/docker/docker-compose.yml index d74ed6e8..1ec4b9df 100644 --- a/tools/docker/docker-compose.yml +++ b/tools/docker/docker-compose.yml @@ -26,9 +26,9 @@ services: muse-server: image: "${MUSE_SERVER_IMAGE:-muse-server}" - platforms: - - "linux/amd64" - - "linux/arm64" +# platforms: +# - "linux/amd64" +# - "linux/arm64" container_name: muse-server ports: - ${SERVER_PORT}:8080 @@ -47,9 +47,9 @@ services: muse-client: image: "${MUSE_CLIENT_IMAGE:-muse-client}" - platforms: - - "linux/amd64" - - "linux/arm64" +# platforms: +# - "linux/amd64" +# - "linux/arm64" container_name: muse-client ports: - ${CLIENT_PORT}:80 diff --git a/tools/scripts/buildAndPush.sh b/tools/scripts/buildAndPush.sh new file mode 100755 index 00000000..8a26ca6e --- /dev/null +++ b/tools/scripts/buildAndPush.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -e +currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +rootDir="$currentDir/../../" + +dockerRepository=$1 + +if [ -z "$1" ] + then + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used.\033[0m" + dockerRepository="myshx" +fi + +dockerTag=$2 + +if [ -z "$2" ] + then + echo -e "\033[0;33mNo Docker Tag provided. Latest will be used.\033[0m" + dockerTag="latest" +fi + +(cd "$rootDir" && ./tools/scripts/openapi/regenerateOpenApi.sh) + +(cd "$rootDir" && exec ./tools/scripts/server/buildJar.sh) +(cd "$rootDir" && exec ./tools/scripts/server/buildImage.sh "$dockerRepository" "$dockerTag") + +(cd "$rootDir" && exec ./tools/scripts/client/build.sh) + +(cd "$rootDir" && exec ./tools/scripts/client/buildDevImage.sh "$dockerRepository" "$dockerTag") +(cd "$rootDir" && exec ./tools/scripts/client/buildImage.sh "$dockerRepository" "$dockerTag") diff --git a/tools/scripts/clean.sh b/tools/scripts/clean.sh index 350b7bb4..b9ad1516 100755 --- a/tools/scripts/clean.sh +++ b/tools/scripts/clean.sh @@ -7,19 +7,15 @@ stage=$1 if [ -z "$1" ] then - echo -e "\033[0;33mNo stage provided. 'LOCAL' stage will be used." + echo -e "\033[0;33mNo stage provided. 'local' stage will be used.\033[0m" stage="local" fi (cd "$rootDir/server" && exec ./gradlew clean) -(cd "") -(cd "$rootDir" && exec docker compose \ - -f ./tools/docker/docker-compose.yml \ - --env-file ./tools/docker/env/$stage.env \ - --project-name=muse-$stage \ - down -v) (cd "$rootDir" && exec docker compose \ -f ./tools/docker/docker-compose.yml \ --env-file ./tools/docker/env/$stage.env \ --project-name=muse-$stage \ rm -f) + +echo -e "\033[0;32mResources has been cleaned.\033[0m" diff --git a/tools/scripts/client/buildDevImage.sh b/tools/scripts/client/buildDevImage.sh index 7fcbf2cf..df8feb0b 100755 --- a/tools/scripts/client/buildDevImage.sh +++ b/tools/scripts/client/buildDevImage.sh @@ -7,7 +7,7 @@ repository=$1 if [ -z "$1" ] then - echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used.\033[0m" repository=myshx # my repository at DockerHub fi @@ -15,7 +15,7 @@ imageTag=$2 if [ -z "$2" ] then - echo -e "\033[0;33mNo image tag provided. Latest will be used." + echo -e "\033[0;33mNo image tag provided. Latest will be used.\033[0m" imageTag=latest fi diff --git a/tools/scripts/client/buildImage.sh b/tools/scripts/client/buildImage.sh index 76f7ddc5..af7f8127 100755 --- a/tools/scripts/client/buildImage.sh +++ b/tools/scripts/client/buildImage.sh @@ -7,7 +7,7 @@ repository=$1 if [ -z "$1" ] then - echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used.\033[0m" repository=myshx # my repository at DockerHub fi @@ -15,7 +15,7 @@ imageTag=$2 if [ -z "$2" ] then - echo -e "\033[0;33mNo image tag provided. Latest will be used." + echo -e "\033[0;33mNo image tag provided. Latest will be used.\033[0m" imageTag=latest fi diff --git a/tools/scripts/client/pushImage.sh b/tools/scripts/client/pushImage.sh index a3192a79..6d52a8af 100755 --- a/tools/scripts/client/pushImage.sh +++ b/tools/scripts/client/pushImage.sh @@ -6,13 +6,13 @@ imageTag=$2 if [ -z "$1" ] then - echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used.\033[0m" repository=myshx # my repository at DockerHub fi if [ -z "$2" ] then - echo -e "\033[0;33mNo imageTag provided. Latest will be used." + echo -e "\033[0;33mNo imageTag provided. Latest will be used.\033[0m" imageTag=latest fi diff --git a/tools/scripts/deploy.sh b/tools/scripts/deploy.sh index 01502535..f846e639 100755 --- a/tools/scripts/deploy.sh +++ b/tools/scripts/deploy.sh @@ -2,34 +2,32 @@ set -e currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) rootDir="$currentDir/../../" -gitCommitSha="$(git rev-parse --short HEAD)" if [ -z "$SSH_HOST" ]; then - echo "Error: The required environment variable 'SSH_HOST' is not set." + echo -e "\033[0;31mError: The required environment variable 'SSH_HOST' is not set.\033[0m" exit 1 fi if [ -z "$SSH_PORT" ]; then - echo "Error: The required environment variable 'SSH_HOST' is not set." + echo -e "\033[0;31mError: The required environment variable 'SSH_HOST' is not set.\033[0m" exit 1 fi if [ -z "$SSH_USER" ]; then - echo "Error: The required environment variable 'SSH_USER' is not set." + echo -e "\033[0;31mError: The required environment variable 'SSH_USER' is not set.\033[0m" exit 1 fi if [ -z "$SSH_PASS" ]; then - echo "Error: The required environment variable 'SSH_PASS' is not set." + echo -e "\033[0;31mError: The required environment variable 'SSH_PASS' is not set.\033[0m" exit 1 fi - dockerRepository=$1 if [ -z "$1" ] then - echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used.\033[0m" dockerRepository="myshx" fi @@ -37,23 +35,14 @@ stage=$2 if [ -z "$2" ] then - echo -e "\033[0;33mNo stage provided. 'DEV' stage will be used." + echo -e "\033[0;33mNo stage provided. 'DEV' stage will be used.\033[0m" stage="dev" fi -dockerTag="$stage-$gitCommitSha" - -(cd "$rootDir" && exec ./tools/scripts/clean.sh local) - -(cd "$rootDir" && ./tools/scripts/openapi/regenerateOpenApi.sh) - -(cd "$rootDir" && exec ./tools/scripts/server/buildJar.sh) -(cd "$rootDir" && exec ./tools/scripts/server/buildImage.sh "$dockerRepository" "$dockerTag") - -(cd "$rootDir" && exec ./tools/scripts/client/build.sh) - -(cd "$rootDir" && exec ./tools/scripts/client/buildDevImage.sh "$dockerRepository" "$dockerTag") -(cd "$rootDir" && exec ./tools/scripts/client/buildImage.sh "$dockerRepository" "$dockerTag") +dockerTag="$stage-$(git rev-parse --short HEAD)" +(cd "$rootDir" && exec ./tools/scripts/stop.sh "$stage") +(cd "$rootDir" && exec ./tools/scripts/clean.sh "$stage") +(cd "$rootDir" && exec ./tools/scripts/buildAndPush.sh "$dockerRepository" "$dockerTag") sshpass -p "$SSH_PASS" ssh -p "$SSH_PORT" "$SSH_USER@$SSH_HOST" \ -o UserKnownHostsFile=/dev/null \ @@ -64,56 +53,24 @@ sshpass -p "$SSH_PASS" ssh -p "$SSH_PORT" "$SSH_USER@$SSH_HOST" \ 'bash -s' << 'EOF' set -e - -#export dockerRepository="$dockerRepository" -#export stage="$stage" -#export dockerTag="$dockerTag" - -echo $dockerRepository -echo $stage -echo $dockerTag -echo $DOCKER_HUB_TOKEN - -echo "one" - -#docker login -u "$dockerRepository" -p "$DOCKER_HUB_TOKEN" - -echo "two" - -echo "four" -echo $RANDOM random_number="$RANDOM" -echo "Debug: random_number is set to: '$random_number'" -echo "Random number: '$random_number'" muse_project_path="/tmp/muse-project-$random_number" echo "Project path: '$muse_project_path'" git clone https://github.com/bas-kirill/muse-project.git "$muse_project_path" -echo "five" cd "$muse_project_path" -echo "six" - -./tools/scripts/clean.sh $stage - -echo "seven" export MUSE_SERVER_IMAGE="$dockerRepository/muse-server:$dockerTag" export MUSE_CLIENT_IMAGE="$dockerRepository/muse-client:$dockerTag" export MUSE_CLIENT_DEV_IMAGE="$dockerRepository/muse-client-dev:$dockerTag" +echo "one" (cd ./tools/docker && docker compose config) +echo "two" -echo "eight" - -docker compose \ - -f ./tools/docker/docker-compose.yml \ - --env-file ./tools/docker/env/$stage.env \ - --project-name=muse-$stage \ - up -d \ - --remove-orphans - -echo -e "\033[0;32mList of available ports:\n\033[0m" -cat ./tools/docker/env/$stage.env +./tools/scripts/stop.sh "$stage" +./tools/scripts/run.sh "$stage" EOF -echo -e "\033[0;32mServices has been deployed to '$stage'.\033[0m" +echo -e "\033[0;32mList of available ports:\n\033[0m" +(cd "$rootDir" && exec cat ./tools/docker/env/local.env) diff --git a/tools/scripts/run.sh b/tools/scripts/run.sh index 1a271c2a..478c4d12 100755 --- a/tools/scripts/run.sh +++ b/tools/scripts/run.sh @@ -3,23 +3,19 @@ set -e currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) rootDir="$currentDir/../../" -(cd "$rootDir" && exec ./tools/scripts/clean.sh) +stage=$1 -(cd "$rootDir" && ./tools/scripts/openapi/regenerateOpenApi.sh) - -(cd "$rootDir" && exec ./tools/scripts/server/buildJar.sh) -(cd "$rootDir" && exec ./tools/scripts/server/buildImage.sh) - -(cd "$rootDir" && exec ./tools/scripts/client/build.sh) -(cd "$rootDir" && exec ./tools/scripts/client/buildDevImage.sh) -(cd "$rootDir" && exec ./tools/scripts/client/buildImage.sh) +if [ -z "$1" ] + then + echo -e "\033[0;33mNo stage provided. 'local' stage will be used.\033[0m" + stage="local" +fi (cd "$rootDir" && exec docker compose \ -f ./tools/docker/docker-compose.yml \ - --env-file ./tools/docker/env/local.env \ - --project-name=muse-project \ + --env-file ./tools/docker/env/$stage.env \ + --project-name=muse-$stage \ up -d \ --remove-orphans) -echo -e "\033[0;32mList of available ports:\n\033[0m" -(cd "$rootDir" && exec cat ./tools/docker/env/local.env) +echo -e "\033[0;32mDocker Serviced has been started.\n\033[0m" diff --git a/tools/scripts/runLocal.sh b/tools/scripts/runLocal.sh new file mode 100755 index 00000000..d51c76a4 --- /dev/null +++ b/tools/scripts/runLocal.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -e +currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +rootDir="$currentDir/../../" + +(cd "$rootDir" && exec ./tools/scripts/stop.sh) +(cd "$rootDir" && exec ./tools/scripts/clean.sh) +(cd "$rootDir" && exec ./tools/scripts/buildAndPush.sh) +(cd "$rootDir" && exec ./tools/scripts/run.sh) + +echo -e "\033[0;32mList of available ports:\n\033[0m" +(cd "$rootDir" && exec cat ./tools/docker/env/local.env) diff --git a/tools/scripts/stop.sh b/tools/scripts/stop.sh new file mode 100755 index 00000000..4cd9900c --- /dev/null +++ b/tools/scripts/stop.sh @@ -0,0 +1,21 @@ +#!/bin/bash +set -e +currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +rootDir="$currentDir/../../" + +stage=$1 + +if [ -z "$1" ] + then + echo -e "\033[0;33mNo stage provided. 'local' stage will be used.\033[0m" + stage="local" +fi + + +(cd "$rootDir" && exec docker compose \ + -f ./tools/docker/docker-compose.yml \ + --env-file ./tools/docker/env/$stage.env \ + --project-name=muse-$stage \ + rm -f) + +echo -e "\033[0;32mDocker Service has been stopped.\033[0m"