2017-01-19 38 views
1

我正在使用Team Services存儲敏感數據,而不是將其硬編碼到我的代碼中。訪問Visual Studio中的祕密變量

比方說,我定義:my_secretname12345value的可變因素

如何訪問該變量在我的代碼?

enter image description here

在上面的例子中,我如何訪問password在我的代碼?

有一個文檔here但他們沒有提到它如何在代碼中使用該變量。

+0

你能告訴我們存儲數據的代碼嗎? –

+0

更新我的問題 – ln9187

+2

@ ln9187將來,您可能希望使用@來確保人們看到您的消息。埃裏克看到了它,因爲他是帖子中唯一的評論者,但這並不總是這樣:)請注意,如果我們在頁面上顯示「此帖子已被編輯」欄。 – BradleyDotNET

回答

1

變量通常作爲環境變量傳遞給構建。然而,祕密不是默認的,你可以在你的工具的參數中明確地使用它們,如MyTool.exe $(password)

+1

這就是*非祕密*構建變量的工作方式。問題是關於祕密變量。您不希望將數據庫密碼放入任何人都可以看到的環境變量中。 –

+0

@EricLippert感謝您的糾正,我已經適當地更新了我的答案。 – Stuart

0

這取決於你的意思是「來自代碼」。如果你說,調用一個腳本,你可以將這個祕密作爲參數傳遞。

作爲一個例子,這裏是一個JSON格式的構建定義。

{ 
    "build": [ 
    { 
     "enabled": true, 
     "continueOnError": false, 
     "alwaysRun": false, 
     "displayName": "PowerShell Script", 
     "timeoutInMinutes": 0, 
     "task": { 
     "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1", 
     "versionSpec": "1.*", 
     "definitionType": "task" 
     }, 
     "inputs": { 
     "scriptType": "inlineScript", 
     "scriptName": "", 
     "arguments": "-Baz $(Baz)", 
     "inlineScript": "param($Baz)\nWrite-Host \"1\" \nWrite-Host \"$($env:Foo)\" \nWrite-Host \"2\" \nWrite-Host \"$($env:Baz)\"\nWrite-Host $Baz", 
     "workingFolder": "", 
     "failOnStandardError": "true" 
     } 
    } 
    ], 
    "variables": { 
    "foo": { 
     "value": "bar" 
    }, 
    "baz": { 
     "value": null, 
     "isSecret": true 
    } 
    } 
} 
1

如果你想在一個構建步驟訪問祕密變量(例如基於您的自定義生成任務的PowerShell),通常你會使用這個祕密變量作爲任務的輸入參數,然後使用VSTS Task SDK「 S功能Get-VstsInput喜歡它如下:

$pwd = Get-VstsInput -Name "Input_Name_In_Task.json_File" 

然後,你可以如下

$securePwd = ConvertTo-SecureString $pwd -AsPlainText -Force 

,並最終在使用它,它轉換爲SecureString的ew System.Management.Automation.PSCredential對象。