2017-03-17 14 views
0

VSTSのPowerShell Azureタスクをリリース用に使用することができますが、リリース用にF#スクリプトを実行することもあります。サービスプリンシパルを使用するAzure。 VSTSにはすでにSPが登録されており、Powershellはそれにアクセスすることができます。テナントIDなどに手を差し伸べるために生のコマンドラインなどを使用して手動で使用することができますか?たとえば、環境変数として?Azure Service PrinicpalのVSTSリリースの詳細へのアクセス

私たちが持っている唯一の代替案は、テナントIDなどをビルド変数としてリリースに手作業でコピーすることですが、これは私にとっては回避策のようです。

答えて

1

はい、カスタムビルド/リリースのステップ/タスクで関連情報(テナントIDなど)を取得できます。

ビルド拡張の詳細については、Add a build taskを参照してください。

達成方法がわからない場合は、以下の手順を参照して、Azure PowerShellのステップ/タスクのすべてのソースコードを入手してください。 Deploy an agent on Windows

  • このビルドは/あなたに
  • ログを解放AzureのPowerShellのステップ/タスクを追加し、
  • キューをそれをconfigコン
  • ビルド/リリース定義を作成します:前提のビルドエージェントに設定し

    1. エージェントマシンを構築し、Azure PowerShellのステップ/タスクを確認してください。[agent folder]\tasks\AzurePowerShell

    シンプルなビルド/リリース手順/タスk個の拡張:

    ファイル:

    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コード:

    $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パートコード(サブスクリプションを選択するための入力ボックス):

    "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スクリプトを呼び出すことができます。 –

    関連する問題