12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/bin/bash
- set -e
- STACK="${1:-sqlite}"
- DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- # remember this is running in "ci" folder..
- # Some defaults for running this script outside of CI
- export COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-npm_local_fulltest}"
- export IMAGE="${IMAGE:-nginx-proxy-manager}"
- export BRANCH_LOWER="${BRANCH_LOWER:-unknown}"
- export BUILD_NUMBER="${BUILD_NUMBER:-0000}"
- if [ "${COMPOSE_FILE:-}" = "" ]; then
- export COMPOSE_FILE="docker/docker-compose.ci.yml:docker/docker-compose.ci.${STACK}.yml"
- fi
- # Colors
- BLUE='\E[1;34m'
- CYAN='\E[1;36m'
- GREEN='\E[1;32m'
- RESET='\E[0m'
- YELLOW='\E[1;33m'
- export BLUE CYAN GREEN RESET YELLOW
- echo -e "${BLUE}❯ ${CYAN}Starting fullstack cypress testing ...${RESET}"
- NETWORK_NAME="${COMPOSE_PROJECT_NAME}_default"
- # $1: container_name
- get_container_ip () {
- local container_name=$1
- local container
- local ip
- container=$(docker-compose ps --all -q "${container_name}" | tail -n1)
- ip=$(docker inspect -f "{{.NetworkSettings.Networks.${NETWORK_NAME}.IPAddress}}" "$container")
- echo "$ip"
- }
- # $1: container_name
- get_container_aliases () {
- local container_name=$1
- local container
- local ip
- container=$(docker-compose ps --all -q "${container_name}" | tail -n1)
- ip=$(docker inspect -f "{{.NetworkSettings.Networks.${NETWORK_NAME}.Aliases}}" "$container")
- echo "$ip"
- }
- # Bring up a stack, in steps so we can inject IPs everywhere
- docker-compose up -d pdns pdns-db
- PDNS_IP=$(get_container_ip "pdns")
- echo -e "${BLUE}❯ ${YELLOW}PDNS IP is ${PDNS_IP}${RESET}"
- # adjust the dnsrouter config
- LOCAL_DNSROUTER_CONFIG="$DIR/../../docker/dev/dnsrouter-config.json"
- rm -rf "$LOCAL_DNSROUTER_CONFIG.tmp"
- # IMPORTANT: changes to dnsrouter-config.json will affect this line:
- jq --arg a "$PDNS_IP" '.servers[0].upstreams[1].upstream = $a' "$LOCAL_DNSROUTER_CONFIG" > "$LOCAL_DNSROUTER_CONFIG.tmp"
- docker-compose up -d dnsrouter
- DNSROUTER_IP=$(get_container_ip "dnsrouter")
- echo -e "${BLUE}❯ ${YELLOW}DNS Router IP is ${DNSROUTER_IP}"
- # mount the resolver
- LOCAL_RESOLVE="$DIR/../../docker/dev/resolv.conf"
- rm -rf "${LOCAL_RESOLVE}"
- printf "nameserver %s\noptions ndots:0" "${DNSROUTER_IP}" > "${LOCAL_RESOLVE}"
- # bring up all remaining containers, except cypress!
- docker-compose up -d --remove-orphans stepca
- docker-compose pull db-mysql || true # ok to fail
- docker-compose up -d --remove-orphans --pull=never fullstack
- # wait for main container to be healthy
- bash "$DIR/../wait-healthy" "$(docker-compose ps --all -q fullstack)" 120
- # Run tests
- rm -rf "$DIR/../../test/results"
- docker-compose up --build cypress
- # Get results
- docker cp -L "$(docker-compose ps --all -q cypress):/test/results" "$DIR/../../test/"
- docker cp -L "$(docker-compose ps --all -q fullstack):/data/logs" "$DIR/../../test/results/"
- if [ "$2" = "cleanup" ]; then
- echo -e "${BLUE}❯ ${CYAN}Cleaning up containers ...${RESET}"
- docker-compose down --remove-orphans --volumes -t 30
- fi
- echo -e "${BLUE}❯ ${GREEN}Fullstack cypress testing complete${RESET}"
|