#!/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 <> deployments.log REMOTE echo "Execute deployment" echo "$remote_script" | ssh "$server" "bash -s" fi