Update docker

This commit is contained in:
david 2025-05-16 18:01:29 +02:00
parent b756df38a9
commit 4c31dbbed0
7 changed files with 441 additions and 230 deletions

70
bin/build Executable file
View file

@ -0,0 +1,70 @@
#!/usr/bin/env bash
server=phela
# Save current stash state
initial_stash_count=$(git stash list | wc -l)
# Check if working directory is clean
if [[ -n $(git status --porcelain) ]]; then
echo "Repository is dirty. Stashing changes..."
git stash push --include-untracked --quiet
stashed=true
else
echo "Repository is clean."
stashed=false
fi
if [[ -n "$1" ]]; then
tag="$1"
else
tag=$(git describe --tags --exact-match 2>/dev/null)
fi
if [[ -n $tag ]]; then
echo "Current Git tag: $tag"
else
branch=$(git rev-parse --abbrev-ref HEAD)
tag=$branch-$(git rev-parse HEAD)
echo "Current commit SHA-1: $tag"
fi
baseimage=code.hohl.cloud/jwa11y/a11yist
image=$baseimage:$tag
echo "Building tag $image"
docker build --progress quiet -t $image --target release .
# Restore the stash if we stashed
if [ "$stashed" = true ]; then
echo "Restoring stashed changes..."
current_stash_count=$(git stash list | wc -l)
if (( current_stash_count > initial_stash_count )); then
git stash pop --quiet
echo "Changes restored."
else
echo "No stash to restore."
fi
else
echo "No changes to restore."
fi
echo "Pushing image $image"
docker push --quiet $image
read -p "Do you want to SSH into $server and run 'deploy'? [y/N] " answer
if [[ "$answer" =~ ^[Yy]$ ]]; then
echo "Connecting to $server and running 'deploy'..."
baseimage_esc=$(echo $baseimage | sed 's/\//\\\//g' | sed 's/\./\\\./g')
tag_esc=$(echo $image | sed 's/\//\\\//g' | sed 's/\./\\\./g')
read -r -d '' remote_script <<REMOTE
cd /usr/local/services/a11yist
sed -i "s/image:.*$baseimage_esc.*/image: $tag_esc/" compose.yml
deploy
echo "$(date) $tag" >> deployments.log
REMOTE
echo "Execute deployment"
echo "$remote_script" | ssh "$server" "bash -s"
fi