如何从devops部署阶段检索云代工oauth令牌以设置自动缩放?
我试图让从DEVOPS流水线部署阶段的Cloud Foundry的OAuth令牌:如何从devops部署阶段检索云代工oauth令牌以设置自动缩放?
...
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 login
,但脚本ecen中的cf push
仍然可以正常工作。因此,我假设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.
又见我similar question上重新配置可用性监控在DEVOPS部署阶段。
确保在运行cf oauth-token
命令之前执行cf login
登录。还请确保双引号"Authorization:$accessToken"
,以便该变量被替换。
更新:它看起来像您可以通过$CF_TOKEN
环境变量从脚本内访问oauth令牌。令牌与流水线的所有者相关联,而不是运行当前流水线阶段的用户。
不幸的是,'cf login'不允许。我已经更新了这个问题来反映这一点。 –
是的,在交付管道中最好使用'$ CF_TOKEN' –
你可以尝试
accessToken=$(cf oauth-token)
CF_TOKEN=$(echo $accessToken | grep “Bearer*” | perl -wpe ‘s/.*(Bearer .+)/$1/‘)
CF_TOKEN should now have the token value
我假设你正在使用的bluemix CLI?您可以通过'bx login'登录,然后运行'bx cf oauth-token'。我认为这应该让你想要什么 – sreya