23 lines
1.1 KiB
Bash
23 lines
1.1 KiB
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")"
|
|
# docker rm -f, et non docker stop : avec --rm, stop rend la main avant que
|
|
# le conteneur soit supprimé, et l'image serait encore utilisée.
|
|
site_cleanup() {
|
|
docker rm -f "$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
|