我正在使用Team Services存儲敏感數據,而不是將其硬編碼到我的代碼中。訪問Visual Studio中的祕密變量
比方說,我定義:my_secret
爲name
和12345
爲value
的可變因素
如何訪問該變量在我的代碼?
在上面的例子中,我如何訪問password
在我的代碼?
有一個文檔here但他們沒有提到它如何在代碼中使用該變量。
我正在使用Team Services存儲敏感數據,而不是將其硬編碼到我的代碼中。訪問Visual Studio中的祕密變量
比方說,我定義:my_secret
爲name
和12345
爲value
的可變因素
如何訪問該變量在我的代碼?
在上面的例子中,我如何訪問password
在我的代碼?
有一個文檔here但他們沒有提到它如何在代碼中使用該變量。
變量通常作爲環境變量傳遞給構建。然而,祕密不是默認的,你可以在你的工具的參數中明確地使用它們,如MyTool.exe $(password)
。
這就是*非祕密*構建變量的工作方式。問題是關於祕密變量。您不希望將數據庫密碼放入任何人都可以看到的環境變量中。 –
@EricLippert感謝您的糾正,我已經適當地更新了我的答案。 – Stuart
這取決於你的意思是「來自代碼」。如果你說,調用一個腳本,你可以將這個祕密作爲參數傳遞。
作爲一個例子,這裏是一個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
}
}
}
如果你想在一個構建步驟訪問祕密變量(例如基於您的自定義生成任務的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
對象。
你能告訴我們存儲數據的代碼嗎? –
更新我的問題 – ln9187
@ ln9187將來,您可能希望使用@來確保人們看到您的消息。埃裏克看到了它,因爲他是帖子中唯一的評論者,但這並不總是這樣:)請注意,如果我們在頁面上顯示「此帖子已被編輯」欄。 – BradleyDotNET