将 Stub Runner 引导服务器部署到 PCF
Deploying Stub Runner Boot Server to PCF
我们正在尝试使用 Stub Runner Boot 在 Nexus(和本地存储库)上提供存根服务器和存根。
在我提交的其他问题的帮助下,我在本地或多或少地进行了整理。
但是现在,我想我会面临另一个问题,我又卡住了...我们准备将存根服务器部署到我们的 PCF 上进行冒烟测试。
我们可以愉快地说 curl pcf_host/stubs
,它会以配置的存根列表和端口号作为响应。
但存根将 运行 在某些端口(我们甚至可以静态化,配置存根服务器)但我认为我们无法在除此之外的端口上调用 PCF 443(或 perhpas 80),或者我们可以吗?
写了这么多,我开始意识到这个问题更多的是PCF而不是SCC,而且我必须说我对PCF的了解甚至比SCC还少。
如果有人能提供帮助,我们将不胜感激。谢谢
很好,你问了这个问题 :)
我们已经使用 Spring Cloud Pipelines 解决了这个问题。您可以在 https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#_3_8_enable_stubs_for_smoke_tests 中阅读更多相关信息。
简而言之,您需要为您的应用开放端口并允许绑定多个端口。您还必须生成路线。我们已经在这里做到了 https://github.com/spring-cloud/spring-cloud-pipelines/blob/master/common/src/main/bash/pipeline-cf.sh#L577
让我把代码的主要部分复制到这里
# FUNCTION: addMultiplePortsSupport {{{
# Adds multiple ports support for Stub Runner Boot
# Uses [PAAS_TEST_SPACE_PREFIX], [ENVIRONMENT] env vars
#
# - Stub Runner name
# - IDs of stubs to be downloaded
# - path to Stub Runner manifest
function addMultiplePortsSupport() {
local stubRunnerName=""
local stubrunnerIds=""
local pathToManifest=""
local appName
appName=$(retrieveAppName)
local hostname
hostname="$(hostname "${stubRunnerName}" "${ENVIRONMENT}" "${pathToManifest}")"
hostname="${hostname}-${appName}"
echo "Hostname for ${stubRunnerName} is ${hostname}"
local testSpace="${PAAS_TEST_SPACE_PREFIX}-${appName}"
local domain
domain="$( getDomain "${hostname}" )"
echo "Domain for ${stubRunnerName} is ${domain}"
# APPLICATION_HOSTNAME and APPLICATION_DOMAIN will be used for stub registration. Stub Runner Boot
# will use this environment variable to hardcode the hostname of the stubs
setEnvVar "${stubRunnerName}" "APPLICATION_HOSTNAME" "${hostname}"
setEnvVar "${stubRunnerName}" "APPLICATION_DOMAIN" "${domain}"
local previousIfs="${IFS}"
local listOfPorts=""
local appGuid
appGuid="$( "${CF_BIN}" curl "/v2/apps?q=name:${stubRunnerName}" -X GET | jq '.resources[0].metadata.guid' | sed 's/^"\(.*\)"$//' )"
echo "App GUID for ${stubRunnerName} is ${appGuid}"
IFS="," read -ra vals <<< "${stubrunnerIds}"
for stub in "${vals[@]}"; do
echo "Parsing ${stub}"
local port
port=${stub##*:}
if [[ "${listOfPorts}" == "" ]]; then
listOfPorts="${port}"
else
listOfPorts="${listOfPorts},${port}"
fi
done
echo "List of added ports: [${listOfPorts}]"
"${CF_BIN}" curl "/v2/apps/${appGuid}" -X PUT -d "{\"ports\":[8080,${listOfPorts}]}"
echo "Successfully updated the list of ports for [${stubRunnerName}]"
IFS="," read -ra vals <<< "${stubrunnerIds}"
for stub in "${vals[@]}"; do
echo "Parsing ${stub}"
local port
port=${stub##*:}
local newHostname="${hostname}-${port}"
echo "Creating route with hostname [${newHostname}]"
"${CF_BIN}" create-route "${testSpace}" "${domain}" --hostname "${newHostname}"
local routeGuid
routeGuid="$( "${CF_BIN}" curl -X GET "/v2/routes?q=host:${newHostname}" | jq '.resources[0].metadata.guid' | sed 's/^"\(.*\)"$//' )"
echo "GUID of the new route is [${routeGuid}]. Will update the mapping for port [${port}]"
"${CF_BIN}" curl "/v2/route_mappings" -X POST -d "{ \"app_guid\": \"${appGuid}\", \"route_guid\": \"${routeGuid}\", \"app_port\": ${port} }"
echo "Successfully updated the new route mapping for port [${port}]"
done
IFS="${previousIfs}"
} # }}}
我们正在尝试使用 Stub Runner Boot 在 Nexus(和本地存储库)上提供存根服务器和存根。
在我提交的其他问题的帮助下,我在本地或多或少地进行了整理。
但是现在,我想我会面临另一个问题,我又卡住了...我们准备将存根服务器部署到我们的 PCF 上进行冒烟测试。
我们可以愉快地说 curl pcf_host/stubs
,它会以配置的存根列表和端口号作为响应。
但存根将 运行 在某些端口(我们甚至可以静态化,配置存根服务器)但我认为我们无法在除此之外的端口上调用 PCF 443(或 perhpas 80),或者我们可以吗?
写了这么多,我开始意识到这个问题更多的是PCF而不是SCC,而且我必须说我对PCF的了解甚至比SCC还少。
如果有人能提供帮助,我们将不胜感激。谢谢
很好,你问了这个问题 :)
我们已经使用 Spring Cloud Pipelines 解决了这个问题。您可以在 https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#_3_8_enable_stubs_for_smoke_tests 中阅读更多相关信息。
简而言之,您需要为您的应用开放端口并允许绑定多个端口。您还必须生成路线。我们已经在这里做到了 https://github.com/spring-cloud/spring-cloud-pipelines/blob/master/common/src/main/bash/pipeline-cf.sh#L577
让我把代码的主要部分复制到这里
# FUNCTION: addMultiplePortsSupport {{{
# Adds multiple ports support for Stub Runner Boot
# Uses [PAAS_TEST_SPACE_PREFIX], [ENVIRONMENT] env vars
#
# - Stub Runner name
# - IDs of stubs to be downloaded
# - path to Stub Runner manifest
function addMultiplePortsSupport() {
local stubRunnerName=""
local stubrunnerIds=""
local pathToManifest=""
local appName
appName=$(retrieveAppName)
local hostname
hostname="$(hostname "${stubRunnerName}" "${ENVIRONMENT}" "${pathToManifest}")"
hostname="${hostname}-${appName}"
echo "Hostname for ${stubRunnerName} is ${hostname}"
local testSpace="${PAAS_TEST_SPACE_PREFIX}-${appName}"
local domain
domain="$( getDomain "${hostname}" )"
echo "Domain for ${stubRunnerName} is ${domain}"
# APPLICATION_HOSTNAME and APPLICATION_DOMAIN will be used for stub registration. Stub Runner Boot
# will use this environment variable to hardcode the hostname of the stubs
setEnvVar "${stubRunnerName}" "APPLICATION_HOSTNAME" "${hostname}"
setEnvVar "${stubRunnerName}" "APPLICATION_DOMAIN" "${domain}"
local previousIfs="${IFS}"
local listOfPorts=""
local appGuid
appGuid="$( "${CF_BIN}" curl "/v2/apps?q=name:${stubRunnerName}" -X GET | jq '.resources[0].metadata.guid' | sed 's/^"\(.*\)"$//' )"
echo "App GUID for ${stubRunnerName} is ${appGuid}"
IFS="," read -ra vals <<< "${stubrunnerIds}"
for stub in "${vals[@]}"; do
echo "Parsing ${stub}"
local port
port=${stub##*:}
if [[ "${listOfPorts}" == "" ]]; then
listOfPorts="${port}"
else
listOfPorts="${listOfPorts},${port}"
fi
done
echo "List of added ports: [${listOfPorts}]"
"${CF_BIN}" curl "/v2/apps/${appGuid}" -X PUT -d "{\"ports\":[8080,${listOfPorts}]}"
echo "Successfully updated the list of ports for [${stubRunnerName}]"
IFS="," read -ra vals <<< "${stubrunnerIds}"
for stub in "${vals[@]}"; do
echo "Parsing ${stub}"
local port
port=${stub##*:}
local newHostname="${hostname}-${port}"
echo "Creating route with hostname [${newHostname}]"
"${CF_BIN}" create-route "${testSpace}" "${domain}" --hostname "${newHostname}"
local routeGuid
routeGuid="$( "${CF_BIN}" curl -X GET "/v2/routes?q=host:${newHostname}" | jq '.resources[0].metadata.guid' | sed 's/^"\(.*\)"$//' )"
echo "GUID of the new route is [${routeGuid}]. Will update the mapping for port [${port}]"
"${CF_BIN}" curl "/v2/route_mappings" -X POST -d "{ \"app_guid\": \"${appGuid}\", \"route_guid\": \"${routeGuid}\", \"app_port\": ${port} }"
echo "Successfully updated the new route mapping for port [${port}]"
done
IFS="${previousIfs}"
} # }}}