promenade/tools/g2/stages/generate-certificates.sh

90 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
source "${GATE_UTILS}"
OUTPUT_DIR="${TEMP_DIR}/config"
mkdir -p "${OUTPUT_DIR}"
chmod 777 "${OUTPUT_DIR}"
OUTPUT_FILE="${OUTPUT_DIR}/combined.yaml"
CERTIFICATES_FILE="${OUTPUT_DIR}/certificates.yaml"
OLD_CERTIFICATES_FILE="${OUTPUT_DIR}/certificates-old.yaml"
IS_UPDATE=0
DO_EXCLUDE=0
EXCLUDE_PATTERNS=()
while getopts "ux:" opt; do
case "${opt}" in
u)
IS_UPDATE=1
;;
x)
DO_EXCLUDE=1
EXCLUDE_PATTERNS+=("${OPTARG}")
;;
*)
echo "Unknown option"
exit 1
;;
esac
done
shift $((OPTIND-1))
function should_include_filename() {
FILENAME="${1}"
if [[ ${DO_EXCLUDE} == 1 ]]; then
for pattern in "${EXCLUDE_PATTERNS[@]}"; do
if echo "${FILENAME}" | grep "${pattern}" > /dev/null; then
return 1
fi
done
fi
return 0
}
# Ensure we do not duplicate configuration on update.
rm -f "${OUTPUT_FILE}"
for source_dir in $(config_configuration); do
log Copying configuration from "${source_dir}"
for filename in ${WORKSPACE}/${source_dir}/*.yaml; do
if should_include_filename "${filename}"; then
log Including config from "$filename"
cat "${filename}" >> "${OUTPUT_FILE}"
else
log Excluding config from "$filename"
fi
done
done
if [[ ${IS_UPDATE} == "1" && -e ${CERTIFICATES_FILE} ]]; then
mv "${CERTIFICATES_FILE}" "${OLD_CERTIFICATES_FILE}"
fi
log "Setting up local caches.."
nginx_cache_and_replace_tar_urls "${OUTPUT_DIR}"/*.yaml
registry_replace_references "${OUTPUT_DIR}"/*.yaml
FILES=($(ls "${OUTPUT_DIR}"))
log Generating certificates
docker run --rm -t \
-w /target \
-v "${OUTPUT_DIR}:/target" \
-e "PROMENADE_DEBUG=${PROMENADE_DEBUG}" \
"${IMAGE_PROMENADE}" \
promenade \
generate-certs \
-o /target \
"${FILES[@]}"
if [[ -e "${OLD_CERTIFICATES_FILE}" ]]; then
rm -f "${OLD_CERTIFICATES_FILE}"
fi
mkdir -p "${NGINX_DIR}"
cat "${TEMP_DIR}"/config/*.yaml > "${TEMP_DIR}/nginx/promenade.yaml"