fix: keep BaoTa proxies on stable ports #16
@@ -96,7 +96,7 @@ else
|
||||
fi
|
||||
|
||||
if [ "$target_slot" = "blue" ]; then
|
||||
target_port="$BASE_PORT"
|
||||
target_port=$((BASE_PORT + 20000))
|
||||
else
|
||||
target_port=$((BASE_PORT + 10000))
|
||||
fi
|
||||
@@ -242,12 +242,11 @@ switch_gateway_proxy() {
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
route_root="${BLUE_GREEN_ROUTE_CONFIG_ROOT:-/www/server/panel/vhost/nginx}"
|
||||
if [ "$SERVICE" = "gateway" ]; then
|
||||
config="$(env_value GATEWAY_BLUE_GREEN_NGINX_CONFIG)"
|
||||
config="${config:-/www/server/panel/vhost/nginx/api-cn.buggoglobal.com.conf}"
|
||||
config="$route_root/00-blue-green-gateway.conf"
|
||||
else
|
||||
config="$(env_value GATEWAY_OVERSEAS_BLUE_GREEN_NGINX_CONFIG)"
|
||||
config="${config:-/www/server/panel/vhost/nginx/api-global.buggoglobal.com.conf}"
|
||||
config="$route_root/00-blue-green-gateway-overseas.conf"
|
||||
fi
|
||||
if [ -z "$config" ] || [ ! -f "$config" ]; then
|
||||
echo "$SERVICE 蓝绿切换要求环境文件配置有效的 Nginx 配置路径" >&2
|
||||
@@ -285,12 +284,11 @@ reload_frontend_proxies() {
|
||||
rollback_gateway_proxy() {
|
||||
[ "$SERVICE" = "gateway" ] || [ "$SERVICE" = "gateway-overseas" ] || return 0
|
||||
[ "$DEPLOY_ENV" = production ] || return 0
|
||||
route_root="${BLUE_GREEN_ROUTE_CONFIG_ROOT:-/www/server/panel/vhost/nginx}"
|
||||
if [ "$SERVICE" = "gateway" ]; then
|
||||
config="$(env_value GATEWAY_BLUE_GREEN_NGINX_CONFIG)"
|
||||
config="${config:-/www/server/panel/vhost/nginx/api-cn.buggoglobal.com.conf}"
|
||||
config="$route_root/00-blue-green-gateway.conf"
|
||||
else
|
||||
config="$(env_value GATEWAY_OVERSEAS_BLUE_GREEN_NGINX_CONFIG)"
|
||||
config="${config:-/www/server/panel/vhost/nginx/api-global.buggoglobal.com.conf}"
|
||||
config="$route_root/00-blue-green-gateway-overseas.conf"
|
||||
fi
|
||||
old_port="${active_port:-$BASE_PORT}"
|
||||
sed -i "s#127\.0\.0\.1:$target_port#127.0.0.1:$old_port#g" "$config"
|
||||
|
||||
@@ -14,6 +14,7 @@ test('all backend business services have blue-green runtime contracts', async ()
|
||||
]) assert.match(script, new RegExp(`${service.replaceAll('-', '\\-')}:`))
|
||||
|
||||
assert.match(script, /target_slot="green"/)
|
||||
assert.match(script, /target_port=\$\(\(BASE_PORT \+ 20000\)\)/)
|
||||
assert.match(script, /target_port=\$\(\(BASE_PORT \+ 10000\)\)/)
|
||||
assert.match(script, /compose run -d --no-deps --name "\$candidate"/)
|
||||
assert.match(script, /wait_for_container "\$candidate"/)
|
||||
@@ -43,8 +44,9 @@ test('candidate failure keeps the active container and successful cutover stops
|
||||
|
||||
test('gateway cutover is atomic and restores nginx config on validation failure', async () => {
|
||||
const script = await read('deploy/scripts/deploy-blue-green-service.sh')
|
||||
assert.match(script, /api-cn\.buggoglobal\.com\.conf/)
|
||||
assert.match(script, /api-global\.buggoglobal\.com\.conf/)
|
||||
assert.match(script, /00-blue-green-gateway\.conf/)
|
||||
assert.match(script, /00-blue-green-gateway-overseas\.conf/)
|
||||
assert.doesNotMatch(script, /api-cn\.buggoglobal\.com\.conf|api-global\.buggoglobal\.com\.conf/)
|
||||
assert.match(script, /尚未完成首次蓝绿迁移,拒绝切换 Gateway/)
|
||||
assert.match(script, /frontend-\$frontend_service\.active/)
|
||||
assert.match(script, /尚未使用稳定上游 \$required_alias,拒绝切换 Gateway/)
|
||||
|
||||
Reference in New Issue
Block a user