如何从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部署阶段。

+0

我假设你正在使用的bluemix CLI?您可以通过'bx login'登录,然后运行'bx cf oauth-token'。我认为这应该让你想要什么 – sreya

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

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

+0

不幸的是,'cf login'不允许。我已经更新了这个问题来反映这一点。 –

+0

是的,在交付管道中最好使用'$ 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