从 VSTS 版本访问 Azure 服务主体详细信息
Accessing Azure Service Prinicpal details from a VSTS release
虽然我们能够在 VSTS 中使用 Powershell Azure 任务进行发布,但我们有时也会 运行 F# 脚本进行发布,作为其中的一部分,我们希望使用服务负责人。我们已经在 VSTS 中注册了 SP,Powershell 可以访问它——但是有没有办法,例如原始命令行等获取租户 ID 等,以便我们可以手动使用它们?比如作为环境变量?
我们唯一的其他选择是手动将租户 ID 等作为构建变量复制到版本中,但这对我来说似乎是一种解决方法。
是的,您可以在自定义 build/release step/task.
中获取相关信息(例如租户 ID)
更多构建扩展信息,您可以参考:Add a build task.
如果你不知道如何实现,可以参考这些步骤获取Azure PowerShell的所有源代码step/task。
- 设置本地构建代理:Deploy an agent on Windows
- 创建一个build/release定义
- 添加 Azure PowerShell step/task 并配置它
- 排队build/release
- 登录您的构建代理机器,检查
[agent folder]\tasks\AzurePowerShell
中的 Azure PowerShell step/task
简单的 build/release step/task 扩展:
文件:
AzureCustomTask
Ps_modules (can be found in the Azure PowerShell step/task folder, refer to previous steps)
Test.ps1
Icon.png
Task.json
测试.ps1代码:
$serviceNameInput = Get-VstsInput -Name ConnectedServiceNameSelector -Default 'ConnectedServiceName'
Write-Host $serviceNameInput
$serviceName = Get-VstsInput -Name $serviceNameInput -Default (Get-VstsInput -Name DeploymentEnvironmentName)
Write-Host $serviceName
if (!$serviceName) {
# Let the task SDK throw an error message if the input isn't defined.
Get-VstsInput -Name $serviceNameInput -Require
}
$endpoint = Get-VstsEndpoint -Name $serviceName -Require
Write-Host $endpoint.Auth.Parameters.TenantId
task.json中的部分代码(select订阅的输入框):
"inputs": [
{
"name": "ConnectedServiceName",
"type": "connectedService:AzureRM",
"label": "Azure RM Subscription",
"defaultValue": "",
"required": true,
"helpMarkDown": "Select the Azure Resource Manager subscription for the deployment."
},
....
虽然我们能够在 VSTS 中使用 Powershell Azure 任务进行发布,但我们有时也会 运行 F# 脚本进行发布,作为其中的一部分,我们希望使用服务负责人。我们已经在 VSTS 中注册了 SP,Powershell 可以访问它——但是有没有办法,例如原始命令行等获取租户 ID 等,以便我们可以手动使用它们?比如作为环境变量?
我们唯一的其他选择是手动将租户 ID 等作为构建变量复制到版本中,但这对我来说似乎是一种解决方法。
是的,您可以在自定义 build/release step/task.
中获取相关信息(例如租户 ID)更多构建扩展信息,您可以参考:Add a build task.
如果你不知道如何实现,可以参考这些步骤获取Azure PowerShell的所有源代码step/task。
- 设置本地构建代理:Deploy an agent on Windows
- 创建一个build/release定义
- 添加 Azure PowerShell step/task 并配置它
- 排队build/release
- 登录您的构建代理机器,检查
[agent folder]\tasks\AzurePowerShell
中的 Azure PowerShell step/task
简单的 build/release step/task 扩展:
文件:
AzureCustomTask
Ps_modules (can be found in the Azure PowerShell step/task folder, refer to previous steps)
Test.ps1
Icon.png
Task.json
测试.ps1代码:
$serviceNameInput = Get-VstsInput -Name ConnectedServiceNameSelector -Default 'ConnectedServiceName'
Write-Host $serviceNameInput
$serviceName = Get-VstsInput -Name $serviceNameInput -Default (Get-VstsInput -Name DeploymentEnvironmentName)
Write-Host $serviceName
if (!$serviceName) {
# Let the task SDK throw an error message if the input isn't defined.
Get-VstsInput -Name $serviceNameInput -Require
}
$endpoint = Get-VstsEndpoint -Name $serviceName -Require
Write-Host $endpoint.Auth.Parameters.TenantId
task.json中的部分代码(select订阅的输入框):
"inputs": [
{
"name": "ConnectedServiceName",
"type": "connectedService:AzureRM",
"label": "Azure RM Subscription",
"defaultValue": "",
"required": true,
"helpMarkDown": "Select the Azure Resource Manager subscription for the deployment."
},
....