Files
Ustagammon/tests/site-image.sh
T

21 lines
970 B
Bash

#!/usr/bin/env bash
# Construit l'image de production (build/deploy, voir make package) sous une
# étiquette propre à ce dépôt, et la lance. À sourcer depuis la racine du
# dépôt ; définit site_image, container et port, et arrête le conteneur puis
# supprime l'image à la sortie du script.
#
# Plusieurs copies de travail (worktrees) peuvent lancer leurs tests en même
# temps : avec une étiquette commune, docker échouait (« parent snapshot ...
# does not exist »). Le suffixe est un hachage court du chemin du dépôt.
site_image="ustagammon/site-test:$(pwd -P | sha1sum | cut -c1-12)"
docker build -q -t "$site_image" build/deploy >/dev/null
container="$(docker run -d --rm -p 127.0.0.1::80 "$site_image")"
site_cleanup() {
docker stop "$container" >/dev/null 2>&1 || true
docker rmi "$site_image" >/dev/null 2>&1 || true
}
trap site_cleanup EXIT
port="$(docker port "$container" 80/tcp | head -n1 | sed 's/.*://')"
export site_image container port