2017-03-17 118 views
0

儘管我們能夠在VSTS中使用Powershell Azure任務來發布版本,但我們有時也會爲版本運行F#腳本,並且作爲其中的一部分,我們希望將資產使用服務主體的Azure。我們已經在VSTS中註冊了SP,並且Powershell可以實現它 - 但是,原始命令行等到Tenant Id等等,以便我們可以手動使用它們?例如,作爲環境變量?從VSTS版本訪問Azure服務Prinicpal詳細信息

我們唯一的另一種選擇是將租戶ID等手動複製到發佈版作爲構建變量,但這看起來像是一種解決方法。

回答

1

是的,您可以在自定義構建/發佈步驟/任務中獲取相關信息(例如Tenant Id)。

有關構建擴展的更多信息,請參閱:Add a build task

如果您不知道如何實現它,可以參考以下步驟獲取Azure PowerShell的所有源代碼步驟/任務。

  1. 建立一個內部部署生成代理:Deploy an agent on Windows
  2. 創建一個構建/發佈定義
  3. 添加Azure中的PowerShell步/任務和配置它
  4. 隊列此版本/釋放
  5. 登錄您的構建代理機器,檢查Azure PowerShell的步驟/任務[agent folder]\tasks\AzurePowerShell

簡單的構建/釋放步驟/ tas ķ擴展:

文件:

AzureCustomTask 

    Ps_modules (can be found in the Azure PowerShell step/task folder, refer to previous steps) 

    Test.ps1 

    Icon.png 

    Task.json 

Test.ps1代碼:在task.json

$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 

部分代碼(輸入框,選擇訂閱):

"inputs": [ 
    { 
     "name": "ConnectedServiceName", 
     "type": "connectedService:AzureRM", 
     "label": "Azure RM Subscription", 
     "defaultValue": "", 
     "required": true, 
     "helpMarkDown": "Select the Azure Resource Manager subscription for the deployment." 
    }, 
.... 
+0

感謝。這是否意味着通過Powershell獲得連接細節的唯一方法是?我想知道我們是否可以通過.NET代碼獲得它? –

+0

@IsaacAbraham它使用vsts-task-lib來獲取端點,它是powershell代碼,但您可以從.net代碼中調用powershell腳本。 –