From 890b7c9cdbbaf255b22b37622ab5742e0391de4a Mon Sep 17 00:00:00 2001 From: skywalker Date: Mon, 26 Aug 2024 17:12:53 +0300 Subject: [PATCH] fix(dev): deploy to dev --- tools/docker/docker-compose.yml | 6 +++ tools/scripts/clean.sh | 1 + tools/scripts/client/buildDevImage.sh | 20 +++++++-- tools/scripts/client/buildImage.sh | 22 ++++++++-- tools/scripts/client/pushDevImage.sh | 23 ---------- tools/scripts/deploy.sh | 62 +++++++++++++-------------- tools/scripts/pushImage.sh | 30 ------------- tools/scripts/server/buildImage.sh | 23 +++++++--- 8 files changed, 90 insertions(+), 97 deletions(-) delete mode 100644 tools/scripts/client/pushDevImage.sh delete mode 100755 tools/scripts/pushImage.sh diff --git a/tools/docker/docker-compose.yml b/tools/docker/docker-compose.yml index 94320438..054b8d46 100644 --- a/tools/docker/docker-compose.yml +++ b/tools/docker/docker-compose.yml @@ -26,6 +26,9 @@ services: muse-server: image: "${MUSE_SERVER_IMAGE:-muse-server}" + platform: + - "linux/amd64" + - "linux/arm64" container_name: muse-server ports: - ${SERVER_PORT}:8080 @@ -44,6 +47,9 @@ services: muse-client: image: "${MUSE_CLIENT_IMAGE:-muse-client}" + platform: + - "linux/amd64" + - "linux/arm64" container_name: muse-client ports: - ${CLIENT_PORT}:80 diff --git a/tools/scripts/clean.sh b/tools/scripts/clean.sh index e80909c3..350b7bb4 100755 --- a/tools/scripts/clean.sh +++ b/tools/scripts/clean.sh @@ -12,6 +12,7 @@ if [ -z "$1" ] 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 \ diff --git a/tools/scripts/client/buildDevImage.sh b/tools/scripts/client/buildDevImage.sh index 7f38e628..7fcbf2cf 100755 --- a/tools/scripts/client/buildDevImage.sh +++ b/tools/scripts/client/buildDevImage.sh @@ -3,15 +3,23 @@ set -e currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) rootDir="$currentDir/../../../" -imageTag=$1 +repository=$1 if [ -z "$1" ] + then + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." + repository=myshx # my repository at DockerHub +fi + +imageTag=$2 + +if [ -z "$2" ] then echo -e "\033[0;33mNo image tag provided. Latest will be used." imageTag=latest fi -imageFullName=muse-client-dev:$imageTag +imageFullName=$repository/muse-client-dev:$imageTag echo [MUSE CLIENT DEV STARTING] building "$imageFullName"... @@ -24,6 +32,12 @@ if docker images -q "$imageFullName" &> /dev/null; then fi echo [MUSE CLIENT DEV] creating docker image "$imageFullName"... -(docker build -f "${rootDir}/client/Dockerfile.dev" -t "$imageFullName" "$rootDir") +(DOCKER_BUILDKIT=1 docker buildx build \ + --platform linux/arm64,linux/amd64 \ + -f "${rootDir}/client/Dockerfile.dev" \ + -t "$imageFullName" \ + "$rootDir" \ + --push) echo -e "\033[0;32m[MUSE CLIENT DEV FINISHED] image '$imageFullName' has been built.\033[0m" +# --platform linux/amd64,linux/arm64 \ \ No newline at end of file diff --git a/tools/scripts/client/buildImage.sh b/tools/scripts/client/buildImage.sh index 6853b315..76f7ddc5 100755 --- a/tools/scripts/client/buildImage.sh +++ b/tools/scripts/client/buildImage.sh @@ -3,17 +3,25 @@ set -e currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) rootDir="$currentDir/../../../" -imageTag=$1 +repository=$1 if [ -z "$1" ] + then + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." + repository=myshx # my repository at DockerHub +fi + +imageTag=$2 + +if [ -z "$2" ] then echo -e "\033[0;33mNo image tag provided. Latest will be used." imageTag=latest fi -imageFullName=muse-client:$imageTag +imageFullName=$repository/muse-client:$imageTag -echo [MUSE CLIENT STARTING] building "$imageFullName"... +echo "[MUSE CLIENT STARTING] building '$imageFullName'..." echo [MUSE CLIENT] remove old image "$imageFullName"... @@ -24,6 +32,12 @@ if docker images -q "$imageFullName" &> /dev/null; then fi echo [MUSE CLIENT] creating docker image "$imageFullName"... -(docker build -f "${rootDir}/client/Dockerfile" -t "$imageFullName" "$rootDir") +(DOCKER_BUILDKIT=1 docker buildx build \ + --platform linux/arm64,linux/amd64 \ + -f "${rootDir}/client/Dockerfile" \ + -t "$imageFullName" \ + "$rootDir" \ + --push) echo -e "\033[0;32m[MUSE CLIENT FINISHED] image '$imageFullName' has been built\033[0m" +# --platform linux/amd64,linux/arm64 \ \ No newline at end of file diff --git a/tools/scripts/client/pushDevImage.sh b/tools/scripts/client/pushDevImage.sh deleted file mode 100644 index 4fa4136e..00000000 --- a/tools/scripts/client/pushDevImage.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -repository=$1 -imageTag=$2 - -if [ -z "$1" ] - then - echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." - repository=myshx # my repository at DockerHub -fi - -if [ -z "$2" ] - then - echo -e "\033[0;33mNo imageTag provided. Latest will be used." - imageTag=latest -fi - -imageFullName=muse-client-dev:$imageTag -dockerHubImageFullName=$repository/muse-client-dev:$imageTag - -(docker tag "$imageFullName" "$dockerHubImageFullName") -(docker push "$dockerHubImageFullName") diff --git a/tools/scripts/deploy.sh b/tools/scripts/deploy.sh index f88d003c..ba91f72f 100755 --- a/tools/scripts/deploy.sh +++ b/tools/scripts/deploy.sh @@ -4,11 +4,6 @@ currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) rootDir="$currentDir/../../" gitCommitSha="$(git rev-parse --short HEAD)" -if [ -z "$DOCKER_HUB_TOKEN" ]; then - echo "Error: The required environment variable 'DOCKER_HUB_TOKEN' is not set." - exit 1 -fi - if [ -z "$SSH_HOST" ]; then echo "Error: The required environment variable 'SSH_HOST' is not set." exit 1 @@ -46,7 +41,6 @@ if [ -z "$2" ] stage="dev" fi - dockerTag="$stage-$gitCommitSha" (cd "$rootDir" && exec ./tools/scripts/clean.sh local) @@ -54,45 +48,49 @@ dockerTag="$stage-$gitCommitSha" (cd "$rootDir" && ./tools/scripts/openapi/regenerateOpenApi.sh) (cd "$rootDir" && exec ./tools/scripts/server/buildJar.sh) -(cd "$rootDir" && exec ./tools/scripts/server/buildImage.sh "$dockerTag") -(cd "$rootDir" && exec ./tools/scripts/pushImage.sh "$dockerRepository" "muse-server" "$dockerTag") +(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 "$dockerTag") -(cd "$rootDir" && exec ./tools/scripts/pushImage.sh "$dockerRepository" "muse-client-dev" "$dockerTag") - -(cd "$rootDir" && exec ./tools/scripts/client/buildImage.sh "$dockerTag") -(cd "$rootDir" && exec ./tools/scripts/pushImage.sh "$dockerRepository" "muse-client" "$dockerTag") - -sshpass -p "$SSH_PASS" ssh -p "$SSH_PORT" "$SSH_USER@$SSH_HOST" << EOF +(cd "$rootDir" && exec ./tools/scripts/client/buildDevImage.sh "$dockerRepository" "$dockerTag") +(cd "$rootDir" && exec ./tools/scripts/client/buildImage.sh "$dockerRepository" "$dockerTag") + +sshpass -p "$SSH_PASS" ssh -p "$SSH_PORT" "$SSH_USER@$SSH_HOST" \ + -o UserKnownHostsFile=/dev/null \ + -o StrictHostKeyChecking=no \ + -q \ + env dockerRepository="$dockerRepository" \ + env dockerTag="$dockerTag" \ + env stage="$stage" \ + 'bash -s' << 'EOF' set -e +# +#export dockerRepository="$dockerRepository" +#export stage="$stage" +#export dockerTag="$dockerTag" -export dockerRepository=$dockerRepository -echo \$dockerRepository -export stage=$stage -echo \$stage -export dockerTag=$dockerTag -echo \$dockerTag -export DOCKER_HUB_TOKEN=$DOCKER_HUB_TOKEN -echo \$DOCKER_HUB_TOKEN +echo $dockerRepository +echo $stage +echo $dockerTag +echo $DOCKER_HUB_TOKEN echo "one" -#docker login -u $dockerRepository -p $DOCKER_HUB_TOKEN +#docker login -u "$dockerRepository" -p "$DOCKER_HUB_TOKEN" echo "two" -cd /tmp - -echo "three" -rm -rf /home/kiryuxa/github-deploy -mkdir -p /home/kiryuxa/github-deploy echo "four" -cd /home/kiryuxa/github-deploy -git clone https://github.com/bas-kirill/muse-project.git +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 +cd "$muse_project_path" echo "six" ./tools/scripts/clean.sh $stage diff --git a/tools/scripts/pushImage.sh b/tools/scripts/pushImage.sh deleted file mode 100755 index 37860d4c..00000000 --- a/tools/scripts/pushImage.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -set -e - -repository=$1 -imageName=$2 -imageTag=$3 - -if [ -z "$1" ] - then - echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." - repository=myshx # my repository at DockerHub -fi - -if [ -z "$2" ] - then - echo -e "\033[0;31mNo image name provided. Can not continue." - exit 1 -fi - -if [ -z "$3" ] - then - echo -e "\033[0;33mNo imageTag provided. Latest will be used." - imageTag=latest -fi - -imageFullName=$imageName:$imageTag -dockerHubImageFullName=$repository/$imageFullName - -(docker tag "$imageFullName" "$dockerHubImageFullName") -(docker push "$dockerHubImageFullName") diff --git a/tools/scripts/server/buildImage.sh b/tools/scripts/server/buildImage.sh index c83e5e70..00f3630e 100755 --- a/tools/scripts/server/buildImage.sh +++ b/tools/scripts/server/buildImage.sh @@ -3,15 +3,23 @@ set -e currentDir=$(cd -P -- "$(dirname -- "$0")" && pwd -P) rootDir="$currentDir/../../../" -imageTag=$1 +repository=$1 if [ -z "$1" ] + then + echo -e "\033[0;33mNo Docker Hub username provided. 'myshx' will be used." + repository=myshx # my repository at DockerHub +fi + +imageTag=$2 + +if [ -z "$2" ] then echo -e "\033[0;33mNo image tag provided. Latest will be used." imageTag=latest fi -imageFullName=muse-server:$imageTag +imageFullName=$repository/muse-server:$imageTag echo [MUSE SERVER STARTING] building "$imageFullName"... @@ -24,6 +32,11 @@ if docker images -q "$imageFullName" &> /dev/null; then fi echo [MUSE SERVER] creating docker image "$imageFullName"... -(docker build -f "${rootDir}/server/Dockerfile" -t "$imageFullName" "$rootDir") - -echo -e "\033[0;32m[MUSE SERVER FINISHED] image '$imageFullName' has been built.\033[0m" +(DOCKER_BUILDKIT=1 docker buildx build \ + --platform linux/arm64,linux/amd64 \ + -f "${rootDir}/server/Dockerfile" \ + -t "$imageFullName" \ + "$rootDir" \ + --push) + +echo -e "\033[0;32m[MUSE SERVER FINISHED] image '$imageFullName' has been built.\033[0m" \ No newline at end of file