我在VSTS中创建了一个发布定义,我只需要获取使用Shell Script部署的服务的外部ip。我可以从命令行执行此操作,但不能从VSTS版本定义执行此操作。我将JSON存储在一个由IP组成的变量中。我需要从这个JSON中获取IP。
或者让我知道他们是否是kubernetes的任何命令,它将仅返回已部署服务的外部IP而不返回任何其他信息。
假设您有LoadBalancer
类型的服务:
kubectl get svc <your_service> -ao jsonpath='{..ip}'
试试这段代码:
function readJson {
UNAMESTR=`uname`
if [[ "$UNAMESTR" == 'Linux' ]]; then
SED_EXTENDED='-r'
elif [[ "$UNAMESTR" == 'Darwin' ]]; then
SED_EXTENDED='-E'
fi;
VALUE=`grep -m 1 "\"${2}\"" ${1} | sed ${SED_EXTENDED} 's/^ *//;s/.*: *"//;s/",?//'`
if [ ! "$VALUE" ]; then
echo "Error: Cannot find \"${2}\" in ${1}" >&2;
exit 1;
else
echo $VALUE ;
fi;
}
NAME=`readJson package.json name` || exit 1;
# $NAME is "sample-project"
您可以通过调用echo {variable} > test.json
将变量值输出到JSON文件。