如何从 devops 部署阶段检索 cloud foundry oauth 令牌以设置自动缩放?

How to retrieve the cloud foundry oauth token from a devops deploy stage for setting up auto scaling?

我正在尝试从 devops 管道部署阶段获取 cloud foundry oauth-token:

...
cf push $CF_APP
...

accessToken=$(cf oauth-token | grep bearer | sed -e s/bearer/Bearer/g)
echo accessToken=$accessToken
...
# use token in Auto Scaling API call ...
curl $createPolicyUrl -X 'PUT' -H 'Content-Type:application/json' \
     -H 'Accept:application/json' \
     -H "Authorization:$accessToken" \
     --data-binary @${policyJson} \
     -s -o response.txt -w '%{http_code}\n'

echo 命令的输出是:

accessToken=

如何检索 oauth 令牌?

请注意,cf push 在脚本 ecen 中工作正常,但在部署脚本中没有执行 cf login。因此,我假设 cf oauth-token 也不需要登录。这是一个有效的假设吗?

更新:我将 cf login 添加到我的部署脚本中:

...
cf push $CF_APP
...

cf login
accessToken=$(cf oauth-token | grep bearer | sed -e s/bearer/Bearer/g)
echo accessToken=$accessToken
...

输出:

cf login not allowed.

另请参阅我的 关于在 devops 部署阶段重新配置可用性监控的内容。

确保在 运行 cf oauth-token 命令之前执行 cf login 登录。还要确保双引号 "Authorization:$accessToken" 以便替换变量。

更新:看起来您可以通过 $CF_TOKEN 环境变量从脚本中访问 oauth-token。该令牌与管道的所有者相关联,而不是与当前管道阶段的用户运行关联。

你能试试吗

accessToken=$(cf oauth-token)
CF_TOKEN=$(echo $accessToken | grep “Bearer*” | perl -wpe ‘s/.*(Bearer .+)//‘)
CF_TOKEN should now have the token value