90 lines
2.1 KiB
Bash
Executable File
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"
|