diff --git a/scripts/build_release.sh b/scripts/build_release.sh new file mode 100755 index 0000000..e194e7a --- /dev/null +++ b/scripts/build_release.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +set -e + +base_tag=$REGISTRY/$SERVICE +tag="$base_tag:${COMMIT_SHA:0:10}" +latest_tag="$base_tag:latest" + +if [[ -n $DEBUG ]] +then + echo "debug:" + echo " REGISTRY: $REGISTRY" + echo " SERVICE: $SERVICE" + echo " COMMIT_SHA: $COMMIT_SHA" + echo " TMP: $TMP" +fi + +echo "docker: logging in" +docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD + +export DOCKER_BUILDKIT=1 + +function pull_target { + target=$1 + echo "pulling $target" + latest_target_tag="$base_tag-$target:latest" + + docker pull $latest_target_tag +} + +function build_target { + target=$1 + echo "building $target" + latest_target_tag="$base_tag-$target:latest" + + docker build \ + --target "$target" \ + --tag "$latest_target_tag" \ + --build-arg BUILDKIT_INLINE_CACHE=1 \ + --cache-from $latest_target_tag \ + --file "$TMP/build_release.Dockerfile" . +} + +pull_target "deps" & +pull_target "builder" & +wait + +build_target "deps" +build_target "builder" + +docker build \ + -t "$tag" \ + --cache-from "$base_tag-deps:latest" \ + --cache-from "$base_tag-builder:latest" \ + --build-arg BUILDKIT_INLINE_CACHE=1 \ + --cache-from $latest_tag \ + -f "$TMP/build_release.Dockerfile" . +docker tag "$tag" "$latest_tag" + diff --git a/scripts/deploy_release.sh b/scripts/deploy_release.sh new file mode 100755 index 0000000..250eac4 --- /dev/null +++ b/scripts/deploy_release.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +echo "deploying image" +deploymentrepo="$TMP/deployments" + +cd $deploymentrepo + +git add . && git commit -m "Added release $SERVICE: ${COMMIT_SHA:0:10}" && git pull && git push diff --git a/scripts/download.sh b/scripts/download.sh new file mode 100755 index 0000000..bb7760a --- /dev/null +++ b/scripts/download.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +pnpm i diff --git a/scripts/generate_graphql.sh b/scripts/generate_graphql.sh new file mode 100755 index 0000000..524eb13 --- /dev/null +++ b/scripts/generate_graphql.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +cuddle_cli x download + +pnpm run generate:graphql +pnpm run format:graphql + +git diff src/lib/graphql/generated.ts diff --git a/scripts/push_release.sh b/scripts/push_release.sh new file mode 100755 index 0000000..c06bc74 --- /dev/null +++ b/scripts/push_release.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +set -e + +base_tag="$REGISTRY/$SERVICE" +tag="$base_tag:${COMMIT_SHA:0:10}" +latest_tag="$base_tag:latest" + +if [[ -n $DEBUG ]] +then + echo "debug:" + echo " REGISTRY: $REGISTRY" + echo " SERVICE: $SERVICE" + echo " COMMIT_SHA: $COMMIT_SHA" + echo " TMP: $TMP" +fi + +echo "docker: logging in" +docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD + +export DOCKER_BUILDKIT=1 + +function push_target { + target=$1 + echo "pushing $target" + latest_target_tag="$base_tag-$target:latest" + docker push "$latest_target_tag" +} + +function push_main_target { + echo "docker: pushing image $tag" + docker push "$tag" + docker push "$latest_tag" +} + +push_target "deps" & +push_target "builder" & +push_main_target & +wait + diff --git a/scripts/render_templates.sh b/scripts/render_templates.sh new file mode 100755 index 0000000..31317d1 --- /dev/null +++ b/scripts/render_templates.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +tag="$REGISTRY/$SERVICE:${COMMIT_SHA:0:10}" +deploymentrepo="$TMP/deployments" + +CUDDLE_FETCH_POLICY=never cuddle_cli render_template \ + --template-file "$TMP/docker-compose.deploy_release.yml.tmpl" \ + --dest "$deploymentrepo/$SERVICE/docker-compose.yml" \ + --extra-var "image=$tag" diff --git a/scripts/setup_ssh.sh b/scripts/setup_ssh.sh new file mode 100755 index 0000000..ae86915 --- /dev/null +++ b/scripts/setup_ssh.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +set -e + +if [ ! -d ~/.ssh ]; then + mkdir -p ~/.ssh + chmod 700 ~/.ssh +fi + +if [ -n "$SSH_KEY" ]; then + SSH_KEY_ID="$HOME/.ssh/id_ed25519" + echo $SSH_KEY | base64 -d > $SSH_KEY_ID + + chmod 600 $SSH_KEY_ID + + cat >$HOME/.ssh/config <