Merge "Make gate scripts more robust"

This commit is contained in:
Anthony Lin 2018-03-01 09:59:48 -05:00 committed by Gerrit Code Review
commit d62140afe8
13 changed files with 70 additions and 80 deletions

View File

@ -121,28 +121,6 @@ metadata:
abstract: false
layer: site
storagePolicy: cleartext
substitutions:
-
src:
schema: deckhand/CertificateAuthority/v1
name: kubernetes
path: .
dest:
path: '.values.secrets.tls.ca'
-
src:
schema: deckhand/Certificate/v1
name: proxy
path: .
dest:
path: '.values.secrets.tls.cert'
-
src:
schema: deckhand/CertificateKey/v1
name: proxy
path: .
dest:
path: '.values.secrets.tls.key'
data:
chart_name: proxy
release: kubernetes-proxy

View File

@ -164,28 +164,6 @@ metadata:
abstract: false
layer: site
storagePolicy: cleartext
substitutions:
-
src:
schema: deckhand/CertificateAuthority/v1
name: kubernetes
path: .
dest:
path: '.values.secrets.tls.ca'
-
src:
schema: deckhand/Certificate/v1
name: proxy
path: .
dest:
path: '.values.secrets.tls.cert'
-
src:
schema: deckhand/CertificateKey/v1
name: proxy
path: .
dest:
path: '.values.secrets.tls.key'
data:
chart_name: proxy
release: kubernetes-proxy

View File

@ -5,6 +5,7 @@ LIB_DIR=$(realpath "$(dirname "${BASH_SOURCE}")")
source "$LIB_DIR"/config.sh
source "$LIB_DIR"/const.sh
source "$LIB_DIR"/docker.sh
source "$LIB_DIR"/etcd.sh
source "$LIB_DIR"/kube.sh
source "$LIB_DIR"/log.sh

26
tools/g2/lib/docker.sh Normal file
View File

@ -0,0 +1,26 @@
docker_ps() {
VIA="${1}"
ssh_cmd "${VIA}" docker ps -a
}
docker_info() {
VIA="${1}"
ssh_cmd "${VIA}" docker info 2>&1
}
docker_exited_containers() {
VIA="${1}"
ssh_cmd "${VIA}" docker ps -q --filter "status=exited"
}
docker_inspect() {
VIA="${1}"
CONTAINER_ID="${2}"
ssh_cmd "${VIA}" docker inspect "${CONTAINER_ID}"
}
docker_logs() {
VIA="${1}"
CONTAINER_ID="${2}"
ssh_cmd "${VIA}" docker logs "${CONTAINER_ID}"
}

View File

@ -46,8 +46,7 @@ log_note() {
log_stage_error() {
NAME=${1}
TEMP_DIR=${2}
echo -e " ${C_ERROR}== Error in stage ${C_HILIGHT}${NAME}${C_ERROR} ( ${C_TEMP}${TEMP_DIR}${C_ERROR} ) ==${C_CLEAR}"
echo -e " ${C_ERROR}== Error in stage ${C_HILIGHT}${NAME}${C_ERROR} ( ${C_TEMP}${LOG_FILE}${C_ERROR} ) ==${C_CLEAR}"
}
log_stage_footer() {
@ -65,7 +64,6 @@ log_stage_success() {
}
log_temp_dir() {
TEMP_DIR=${1}
echo -e "Working in ${C_TEMP}${TEMP_DIR}${C_CLEAR}"
}

View File

@ -20,11 +20,12 @@ nginx_up() {
nginx_cache_and_replace_tar_urls() {
log "Finding tar_url options to cache.."
TAR_NUM=0
mkdir -p "${NGINX_DIR}"
for file in "$@"; do
grep -Po "^ +tar_url: \K.+$" "${file}" | while read tar_url ; do
# NOTE(mark-burnet): Does not yet ignore repeated files.
log "Caching ${tar_url} in file: ${file}"
DEST_PATH="${NGINX_DIR}/cached-tar-${TAR_NUM}.tgz"
log "Caching ${tar_url} in file: ${DEST_PATH}"
REPLACEMENT_URL="${NGINX_URL}/cached-tar-${TAR_NUM}.tgz"
curl -Lo "${DEST_PATH}" "${tar_url}"
sed -i "s;${tar_url};${REPLACEMENT_URL};" "${file}"

View File

@ -26,7 +26,8 @@
},
{
"name": "Genesis",
"script": "genesis.sh"
"script": "genesis.sh",
"on_error": "collect_genesis_info.sh"
}
],
"vm": {

View File

@ -26,7 +26,8 @@
},
{
"name": "Genesis",
"script": "genesis.sh"
"script": "genesis.sh",
"on_error": "collect_genesis_info.sh"
},
{
"name": "Load Site Configuration",

View File

@ -30,7 +30,8 @@
},
{
"name": "Genesis",
"script": "genesis.sh"
"script": "genesis.sh",
"on_error": "collect_genesis_info.sh"
},
{
"name": "Join Masters",

View File

@ -0,0 +1,29 @@
#!/usr/bin/env bash
# NOTE(mark-burnett): Keep trying to collect info even if there's an error
set +e
set -x
source "${GATE_UTILS}"
ERROR_DIR="${TEMP_DIR}/errors"
VIA=n0
mkdir -p "${ERROR_DIR}"
log "Gathering info from failed genesis server (n0) in ${ERROR_DIR}"
log "Gathering docker info for exitted containers"
mkdir -p "${ERROR_DIR}/docker"
docker_ps "${VIA}" | tee "${ERROR_DIR}/docker/ps"
docker_info "${VIA}" | tee "${ERROR_DIR}/docker/info"
for container_id in $(docker_exited_containers "${VIA}"); do
docker_inspect "${VIA}" "${container_id}" | tee "${ERROR_DIR}/docker/${container_id}"
echo "=== Begin logs ===" | tee -a "${ERROR_DIR}/docker/${container_id}"
docker_logs "${VIA}" "${container_id}" | tee -a "${ERROR_DIR}/docker/${container_id}"
done
log "Gathering kubectl output"
mkdir -p "${ERROR_DIR}/kube"
kubectl_cmd "${VIA}" describe nodes n0 | tee "${ERROR_DIR}/kube/n0"
kubectl_cmd "${VIA}" get --all-namespaces -o wide pod | tee "${ERROR_DIR}/kube/pods"

View File

@ -6,8 +6,10 @@ source "${GATE_UTILS}"
rsync_cmd "${TEMP_DIR}/scripts"/*genesis* "${GENESIS_NAME}:/root/promenade/"
set -o pipefail
ssh_cmd "${GENESIS_NAME}" /root/promenade/genesis.sh 2>&1 | tee -a "${LOG_FILE}"
ssh_cmd "${GENESIS_NAME}" /root/promenade/validate-genesis.sh 2>&1 | tee -a "${LOG_FILE}"
set +o pipefail
if ! ssh_cmd n0 docker images | tail -n +2 | grep -v registry:5000 ; then
log_warn "Using some non-cached docker images. This will slow testing."

View File

@ -22,7 +22,7 @@ chmod -R 755 "${TEMP_DIR}"
STAGES_DIR=${WORKSPACE}/tools/g2/stages
log_temp_dir "${TEMP_DIR}"
log_temp_dir
echo
STAGES=$(mktemp)
@ -44,10 +44,11 @@ while read -u 3 stage; do
log_stage_error "${NAME}" "${LOG_FILE}"
if echo "${stage}" | jq -e .on_error > /dev/null; then
log_stage_diagnostic_header
ON_ERROR=${WORKSPACE}/$(echo "${stage}" | jq -r .on_error)
ON_ERROR=${WORKSPACE}/tools/g2/on_error/$(echo "${stage}" | jq -r .on_error)
set +e
$ON_ERROR
fi
log_stage_error "${NAME}" "${TEMP_DIR}"
exit 1
fi
log_stage_footer "${NAME}"

View File

@ -119,28 +119,6 @@ metadata:
abstract: false
layer: site
storagePolicy: cleartext
substitutions:
-
src:
schema: deckhand/CertificateAuthority/v1
name: kubernetes
path: .
dest:
path: '.values.secrets.tls.ca'
-
src:
schema: deckhand/Certificate/v1
name: proxy
path: .
dest:
path: '.values.secrets.tls.cert'
-
src:
schema: deckhand/CertificateKey/v1
name: proxy
path: .
dest:
path: '.values.secrets.tls.key'
data:
chart_name: proxy
release: kubernetes-proxy
@ -149,11 +127,6 @@ data:
upgrade:
no_hooks: true
values:
secrets:
tls:
ca: placeholder
cert: placeholder
key: placeholder
images:
tags:
proxy: ${IMAGE_HYPERKUBE}