0

我正在尝试从 devops 管道部署阶段获取云代工厂 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 部署阶段重新配置可用性监控的类似问题

4

2 回答 2

3

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

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

于 2017-06-21T21:15:48.163 回答
0

你能试一下吗

accessToken=$(cf oauth-token)
CF_TOKEN=$(echo $accessToken | grep “Bearer*” | perl -wpe ‘s/.*(Bearer .+)/$1/‘)
CF_TOKEN should now have the token value
于 2017-06-22T19:01:25.383 回答