From 23538b015e9d6a311876c719b4954789903f675d Mon Sep 17 00:00:00 2001 From: tim Date: Thu, 22 Feb 2024 16:19:28 -0400 Subject: [PATCH] made deploy.sh a softlink to build.sh --- bin/build.sh | 41 +++++++++++++++++++++++++++++++---------- bin/deploy.sh | 51 +-------------------------------------------------- 2 files changed, 32 insertions(+), 60 deletions(-) mode change 100755 => 120000 bin/deploy.sh diff --git a/bin/build.sh b/bin/build.sh index e595e06..239dc26 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -1,7 +1,15 @@ #!/bin/bash if [ "$1" != "backend" ] && [ "$1" != "server" ] && [ "$1" != "web" ]; then - echo usage: "$0" '{backend|server|web} [config] [deployment]' + echo + echo usage: "$0 "'{backend|server|web} [config] [deployment] [kubernetes]' + echo + echo ' [config] is used to find configuration files e.g. web/.env.{config} or backend/dexorder-{config}.toml. Defaults to project name.' + echo + echo ' [deployment] refers to the set of contracts bundled in the image, from contract/deployment/{deployment}. Defaults to config name.' + echo + echo ' [kubernetes] is used to find the yaml file for deployment: deploy/k8s/{kubernetes}.yaml. Defaults to project name.' + echo exit 1 else PROJECT=$1 @@ -21,23 +29,37 @@ if [ "$1" == "dev" ]; then else CONFIG=$1 shift - DIRTY="$( git status | grep "Changes " )" + DIRTY="$( cd $PROJECT && git status | grep "Changes " )" if [ "$DIRTY" != "" ]; then echo $PROJECT has uncommited changes. - echo $DIRTY echo echo Use \`$0 $PROJECT dev\` to deploy a development-tagged version instead. exit 1 fi - TAG="$( git log --oneline $PROJECT | head -1 | cut -d ' ' -f 1 )" + DIRTY="$( cd contract && git status | grep "Changes " )" + if [ "$DIRTY" != "" ]; then + echo contract has uncommited changes. + echo + echo Use \`$0 $PROJECT dev\` to deploy a development-tagged version instead. + exit 1 + fi + TAG="$( cd $PROJECT && git log --oneline | head -1 | cut -d ' ' -f 1 )-$( cd contract && git log --oneline | head -1 | cut -d ' ' -f 1 )" fi if [ "$1" != "" ]; then DEPLOYMENT=$1 + shift else DEPLOYMENT=$CONFIG fi +if [ "$1" != "" ]; then + KUBERNETES=$1 + shift +else + KUBERNETES=$PROJECT +fi + if [ $(basename "$0") == 'deploy.sh' ]; then DEPLOY=1 else @@ -45,18 +67,17 @@ else fi REMOTE=gcr.io/cointrader-211623/dexorder/$PROJECT:$TAG -echo $REMOTE # todo nocache as a script option #docker build --no-cache -f deploy/Dockerfile-$PROJECT -t dexorder/$PROJECT:latest . || exit 1 echo Building $PROJECT config=$CONFIG deployment=$DEPLOYMENT '=>' $TAG -docker build -f deploy/docker/Dockerfile-$PROJECT --build-arg="CONFIG=$CONFIG" --build-arg="DEPLOYMENT=$DEPLOYMENT" -t dexorder/$PROJECT:latest . || exit 1 -docker tag dexorder/$PROJECT:latest dexorder/$PROJECT:$TAG -docker tag dexorder/$PROJECT:$TAG $REMOTE -echo "$(date)" built dexorder/$PROJECT:$TAG +docker build -f deploy/docker/Dockerfile-$PROJECT --build-arg="CONFIG=$CONFIG" --build-arg="DEPLOYMENT=$DEPLOYMENT" -t dexorder/$KUBERNETES:latest . || exit 1 +docker tag dexorder/$KUBERNETES:latest dexorder/$KUBERNETES:$TAG +docker tag dexorder/$KUBERNETES:$TAG $REMOTE +echo "$(date)" built $REMOTE if [ "$DEPLOY" != "0" ]; then docker push $REMOTE - sed "s#dexorder/$PROJECT.*#$REMOTE#" deploy/conf/$PROJECT.yaml | kubectl apply -f - + sed "s#dexorder/$PROJECT.*#$REMOTE#" deploy/conf/$KUBERNETES.yaml | kubectl apply -f - echo deployed $PROJECT.yaml $TAG fi diff --git a/bin/deploy.sh b/bin/deploy.sh deleted file mode 100755 index dcc76d6..0000000 --- a/bin/deploy.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -if [ "$1" != "backend" ] && [ "$1" != "server" ] && [ "$1" != "web" ]; then - echo You must specify the project: backend, server, web - exit 1 -else - PROJECT=$1 - shift -fi - -if [ "$1" == "dev" ]; then - shift - TAG="dev`date +%Y%m%d%H%M%S`" -else - DIRTY="$( cd $PROJECT && git status | grep "Changes " )" - if [ "$DIRTY" != "" ]; then - echo $PROJECT has uncommited changes. - echo - echo Use \`$0 $PROJECT dev\` to deploy a development-tagged version instead. - exit 1 - fi - DIRTY="$( cd contract && git status | grep "Changes " )" - if [ "$DIRTY" != "" ]; then - echo contract has uncommited changes. - echo - echo Use \`$0 $PROJECT dev\` to deploy a development-tagged version instead. - exit 1 - fi - TAG="$( cd $PROJECT && git log --oneline | head -1 | cut -d ' ' -f 1 )-$( cd contract && git log --oneline | head -1 | cut -d ' ' -f 1 )" -fi - -if [ $(basename "$0") == 'deploy.sh' ]; then - DEPLOY=1 -else - DEPLOY=0 -fi - -# todo --no-cache as a script option -docker build -f deploy/docker/Dockerfile-$PROJECT -t dexorder/$PROJECT:latest . || exit 1 -docker tag dexorder/$PROJECT:latest dexorder/$PROJECT:$TAG -echo $(date) built dexorder/$PROJECT:$TAG - -if [ "$DEPLOY" != "0" ]; then - REMOTE=gcr.io/cointrader-211623/dexorder/$PROJECT:$TAG - echo pushing $REMOTE - docker tag dexorder/$PROJECT:$TAG $REMOTE - docker push $REMOTE - sed "s#dexorder/$PROJECT.*#$REMOTE#" deploy/k8s/$PROJECT.yaml | kubectl apply -f - - echo deployed $PROJECT.yaml $TAG -fi diff --git a/bin/deploy.sh b/bin/deploy.sh new file mode 120000 index 0000000..c07a74d --- /dev/null +++ b/bin/deploy.sh @@ -0,0 +1 @@ +build.sh \ No newline at end of file