fix(jenkins): add git fallback and nginx aliases
This commit is contained in:
@@ -9,6 +9,28 @@ require_path() {
|
||||
fi
|
||||
}
|
||||
|
||||
normalize_server_aliases() {
|
||||
printf "%s" "${SERVER_ALIASES:-}" | tr ',' ' ' | xargs
|
||||
}
|
||||
|
||||
validate_server_names() {
|
||||
local alias_name
|
||||
if [[ -z "${SERVER_NAME:-}" ]]; then
|
||||
echo "[server-provision] SERVER_NAME 不能为空。" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! "${SERVER_NAME}" =~ ^[A-Za-z0-9][A-Za-z0-9.-]*$ ]]; then
|
||||
echo "[server-provision] SERVER_NAME 只能填写单个域名或 IP,不能包含空格、路径或协议: ${SERVER_NAME}" >&2
|
||||
exit 1
|
||||
fi
|
||||
for alias_name in $(normalize_server_aliases); do
|
||||
if [[ ! "${alias_name}" =~ ^[A-Za-z0-9][A-Za-z0-9.-]*$ ]]; then
|
||||
echo "[server-provision] SERVER_ALIASES 只能填写域名或 IP,多个用空格或逗号分隔: ${alias_name}" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
run_cmd() {
|
||||
echo "+ $*"
|
||||
if [[ "${DRY_RUN}" != "true" ]]; then
|
||||
@@ -336,10 +358,15 @@ EOF
|
||||
|
||||
render_nginx_template() {
|
||||
local template="$1"
|
||||
local rendered_brotli
|
||||
local rendered_brotli server_names
|
||||
rendered_brotli="$(render_nginx_brotli_directives)"
|
||||
server_names="${SERVER_NAME}"
|
||||
if [[ -n "${SERVER_ALIASES:-}" ]]; then
|
||||
server_names="${server_names} $(normalize_server_aliases)"
|
||||
fi
|
||||
sed \
|
||||
-e "s/genarrative.example.com/${SERVER_NAME}/g" \
|
||||
-e "s/server_name genarrative.example.com;/server_name ${server_names};/g" \
|
||||
-e "s|/etc/letsencrypt/live/genarrative.example.com/|/etc/letsencrypt/live/${SERVER_NAME}/|g" \
|
||||
-e "/# __GENARRATIVE_BROTLI_DIRECTIVES__/r /dev/stdin" \
|
||||
-e "/# __GENARRATIVE_BROTLI_DIRECTIVES__/d" \
|
||||
"${template}" <<<"${rendered_brotli}"
|
||||
@@ -504,6 +531,8 @@ require_path scripts/deploy/maintenance-on.sh
|
||||
require_path scripts/deploy/maintenance-off.sh
|
||||
require_path scripts/deploy/maintenance-status.sh
|
||||
|
||||
validate_server_names
|
||||
|
||||
echo "[server-provision] target=${DEPLOY_TARGET}, dry_run=${DRY_RUN}, nginx_config_mode=${NGINX_CONFIG_MODE}, source_commit=$(cat .jenkins-source-commit)"
|
||||
|
||||
run_cmd id
|
||||
|
||||
Reference in New Issue
Block a user