Files
timmypidashev.dev/web
T
2023-11-12 00:00:43 -08:00

103 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# Commandline args
action="$1"
environment="$2"
# Pulls project version from version.toml
project_version() {
local version=$(awk -F'[" ]+' '/^\[project\]/{getline; print $3}' "version.toml")
echo "v$version"
}
# Pulls container version from version.toml
container_version() {
local container="$1"
local version=$(awk -F'[" ]+' -v container="$container" '/^\[containers\]/{block=$1} block == "[containers]" && $1 == container {getline; print $3}' "version.toml")
echo "v$version"
}
# Set the build arguments as environment variables
BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
GIT_COMMIT=$(git rev-parse --short HEAD)
PROJECT_VERSION=$(project_version)
case $action in
help)
echo "timmypidashev.com | deploy script"
echo "Environments:"
echo " * dev"
echo " - development environment, builds include local https, debug mode, and hot reloading"
echo ""
echo " * prod"
echo " - production environment, builds include optimizations and are ready to roll"
echo ""
echo "Actions:"
echo " * build"
echo " - builds the entire stack without cache"
echo " - example: '{action} {environment}' or '{action} {environment}"
echo ""
echo " * run"
echo " - runs the entire stack with caching enabled"
echo " - example: '{action} {environment}'"
echo " - Note: individual containers cannot run on their own"
echo ""
echo " * bump"
echo " - bumps a containers version and the project version"
echo " - example: '{action} {container}'"
echo ""
echo " * push"
echo " - pushes an image to ghcr.io"
echo " - example: '{action} {container}"
echo " - Note: only production images are pushed"
exit 1
;;
build)
if [ "$environment" == "dev" ];
then
docker compose --file compose.dev.yml build \
--build-arg BUILD_DATE=$BUILD_DATE \
--build-arg GIT_COMMIT=$GIT_COMMIT \
--build-arg PROJECT_VERSION="$PROJECT_VERSION" \
--build-arg DNS_VERSION=$(container_version "dns") \
--build-arg PROXY_VERSION=$(container_version "proxy") \
elif [ "$environment" == "prod" ];
then
echo "build prod"
else
echo "Invalid environment. Use 'dev' or 'prod'!"
exit 1
fi
;;
run)
if [ "$environment" == "dev" ];
then
echo "run dev"
elif [ "$environment" == "prod" ];
then
echo "run prod"
else
echo "Invalid environment. Use 'dev' or 'prod'!"
exit 1
fi
;;
bump)
"bump pkg"
;;
push)
"push pkg"
;;
*)
echo "Invalid action. Use 'build', 'run', or 'push'!"
;;
esac